Mutable单词的含义是:可变的,Mutable关键字的作用是说明类的成员变量是可变的,即使在const成员方法中也可以变化而不引起编译错误。mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。
如下所示:
class A{
public:
void test() const{//const表明此方法的代码不能改变调用此类的对象(*this对象)的成员变量。
_name = "test";//错误,改变了*this对象的成员_name
_id = 1;//正确,因为_id是mutable 的。
}
private:
mutable int _id;
string _name;
};
注:effectiveC++第一条:尽量使用const.....