const成员函数
本文结论:
const对象、指向const对象的指针或引用只能用于调用其const成员函数。
实例说明:
class A { public: void mf1(){ cout<<"Function Call"<<endl; } void mf2() const{ cout<<"const Function Call"<<endl;} }; int main() { A a; a.mf1(); //ok a.mf2(); //ok const A b; b.mf1(); //error b.mf2(); //ok return 0; }
听过this指针的应该知道,两个成员函数的声明其实是这样的:
void mf1(A *const this); void mf2(const A *const this);
(每个成员函数都有一个额外的、隐含的形参this,将该成员函数与调用该函数的类对象捆绑在一起)
又因为c++规定将普通引用绑定到const对象是不合法的。
const int ival = 1024; int &refVal = ival; //error
所以得证。