函数后面加constant是什么意思呀
- 培训职业
- 2025-05-06 12:20:03
首先,是加const不是constant。
函数后面加const是表明这个函数不会更改class的状态,即class内各成员变量的值。编译器如果发现某个const函数里改变了成员变量的值会报错。比如下面这个例子。
struct A {
int i;
void set(int v) {i = v;} //不能加const,因为i值改变了。
int value() const {return i;} //正确,i值没有改变。
int value2() const {return i++;} //错误,因为i值改变了。必须将const去掉。
};
如果函数比较复杂时,比如并不直接改变某个值,但是调用了其它函数,编译器怎么判断函数是否const呢。可以看下面的例子。
struct B {
A a; //B里包含一个A类成员。
int func1() const {return a.value();} //正确,所调用的a.value()也是一个const函数。
int func2() const {return a.value2();} //错误,a.value2()不是const函数。
};
也就是说,在const函数里只能调用成员的const函数以保证成员状态不会改变。
所以,在设计类的函数里,区别const和非const函数并标记出来是个好习惯,既保证自己不会对类误操作,也可以明示别人调用你的类里哪些会改变类状态。
上一篇
纳米颗粒的团聚
多重随机标签