如果我们希望能够修改类的某个数据成员,即便是在一个const 成员函数内,可以通过在变量的声明中加入mutable关键字来做到。
一个可变数据成员永远都不会是const,即便它是const对象的成员,因此const成员函数可以改变一个可变成员的值。
class A
{
public:
voud f() const;
private:
mutable int i;
};
void A::f() const
{
++i; // 在const成员函数内,i的值仍然可以改变。
}
即i时一个可变数据成员,任何成员函数包括const成员函数都可以改变它的值。