引言:对于类的成员函数来说,如果它不修改类的状态,一般将其声明为const函数. 但是如果我们想在类的const成员函数中修改与类的状态无关的成员变量,那么该怎么做呢?答案是使用mutable关键字。
示例如下:
class Test { public: Test() : mValue(0) { } inline void Output() const //仅用于输出并不会修改类的状态,但会修改非状态成员变量. { mValue++; cout << "Output the object: " << this << endl; } inline void GetOutputTimes() const { return mValue; } private: mutable int mValue;//表示类对象输出的次数. };在以上代码段中,const类型的成员函数Output()会修改成员变量mValue。如果不将mValue声明为mutable类型是不行的。
int main() { Test* pObj = new Test(); pObj->Output(); pObj->Output(); cout << pObj->GetOutputTimes() << endl;//输出2. return 0; }
