当类的某个函数被声明为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;
}