在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
關鍵字只能用于非靜態成員變量,不能用于靜態成員變量或全局變量。