C++のmutableキーワードの役割は何ですか?
C++のmutableキーワードは、クラスのメンバー変数を修飾するために使用されます。 mutableキーワードは、他のメンバー変数は変更できないconstメンバ関数内で、そのメンバー変数を変更することを可能にします。
constメンバ関数は、オブジェクトの状態に影響を与えないものとみなされるため、通常はクラスのメンバ変数の変更が禁止されています。しかし、キャッシュ値など、constメンバ関数内から値を変更する必要があるメンバ変数もあります。そのような場合、mutableキーワードでそのメンバ変数を修飾することで、constメンバ関数内での変更が可能になります。
例のコードを以下に示します
class Example {
public:
int getValue() const {
// 在const成员函数中修改mutable变量
counter++;
return value;
}
private:
int value;
mutable int counter; // 使用mutable关键字修饰
};
上部のコードでは、counterはmutableとしてマークされているため、const member function getValue()内で変更が可能です。一方で、valueはmutableとしてマークされていないため、const member function内では変更できません。