当类的某个函数被声明为const,但是后期扩展又需要修改类的某个成员变量的时候。如果直接修改会报错:“表达式必须是可修改的左值”。此时可以在类成员变量前面添加mutable修饰,这样即使函数是const,但仍可以修改这个类成员变量。例子如下:
直接使用会报错:
class Test { public: void setData(const int data) const; private: int _data; }; void Test::setData(const int data) const { _data = data; }
修改后正常:
class Test { public: void setData(const int data) const; private: mutable int _data; }; void Test::setData(const int data) const { _data = data; }