当前位置:首页 > 培训职业 > 正文

函数后面加constant是什么意思呀

首先,是加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函数并标记出来是个好习惯,既保证自己不会对类误操作,也可以明示别人调用你的类里哪些会改变类状态。

多重随机标签

猜你喜欢文章