通常情况下,当对象是非const 常量时,this指针的类型是 MyClass * const, 也就是指针常量,不能改变指针的指向 ; 当对象是const 常量时,this 指针的类型是 const MyClass const*.
常量成员函数希望接受的this 指正的类型就是 const MyClass* const, 于是,想在常量成员函数中,改变成员变量的状态,可以这样
void f()
{
((MyClass*)this)->state = ...
}
或者使用C++风格的去掉const 属性
(const_cast<B*>this)->state = ...当然,还有一种常见的方法,就是把state 成员申明为mutable:
mutable int state;
本文探讨了C++中this指针的概念及其在const成员函数中的应用方式。包括如何在const成员函数中修改对象状态的方法,如使用const_cast转换或声明mutable成员变量。
1879

被折叠的 条评论
为什么被折叠?



