const member function in cpp

March 6, 2017
C++

默认情况下,this是一个const pointer to the nonconst version of the class type。比如有一个类A,那么在类里面,this的类型是A * const。因为不能把一个const对象的地址赋值给一个指向nonconst对象的指针,因此不能把this绑定到一个const对象上。这就导致,不能在const对象上调用一个nonconst member function。

解决方法就是,把this声明为const。可是this是隐性的变量,所以C++的解决方法就是在参数列表后面指定const。这样的函数就是const member function。它的语义是:this是一个const pointer to a const object of the class type。这样,const对象和nonconst对象都可以调用这个函数。

comments powered by Disqus