在C++中,关键字mutable
用于修饰类的成员变量。它的含义是,被mutable
修饰的成员变量可以在const
成员函数中被修改。
通常情况下,const
成员函数是不允许修改对象的成员变量的。然而,有时候可能会遇到一些特殊情况,需要在const
成员函数中修改某个成员变量的值。这时,就可以使用mutable
关键字来标记该成员变量,使其可以在const
成员函数中被修改。
使用mutable
关键字修饰的成员变量,只要是在const
成员函数内部进行的修改操作,都是合法的。这样做的目的是为了保护对象的不变性,同时又允许特定的成员变量在const
成员函数中被修改。
下面是一个示例,展示了mutable
关键字的使用:
class MyClass {
public:
void setValue(int value) const {
// 修改被 mutable 修饰的成员变量
mutableValue = value;
}
int getValue() const {
// const 成员函数可以访问和读取 mutable 成员变量
return mutableValue;
}
private:
mutable int mutableValue;
};
在上述示例中,mutableValue
是一个被mutable
修饰的成员变量。setValue
是一个const
成员函数,但它可以修改mutableValue
的值。而getValue
则是另一个const
成员函数,它只能读取mutableValue
的值,但不能修改它。
需要注意的是,mutable
关键字只能用于非静态成员变量,不能用于静态成员变量或全局变量。