在类成员函数后面加const

时间:2023-03-09 03:52:16
在类成员函数后面加const

在看开源代码时,经常会看到在类的成员函数后面加const,之前了没有太关注过,近来闲来无事,就想起这件事,网上查了一下,大概明白了是怎么回事,这里引用CSDN愽文里的段话:“编译器会自动给每一个函数加一个this指针。在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外)。实际上,也就是对这个this指针加上了const修饰”。举个例子:

class test

{

public:

  test(int a=10):aa(a){}

  ~test(){}

  int getA() const {aa++,bb++;return aa}

private:

  int aa;

  mutable int bb;

};

int main()

{

  test t(100);

  int cc = t.getA();

};

这里编译器会报错, C2166: 左值指定 const 对象,getA()函数不能执行aa++操作,但执行bb++是可以的。