C++のmutableキー


C++のmutableキー
C++では、mutableはconstの制限を突破するために設定されています.クラスのメンバー変数を修飾するために使用できます.mutableで修飾された変数は、const関数でもこの変数の値を変更できるように、常に可変状態になります.
たとえば次の例です.
#include 
using namespace std;
class Test
{
public:
    Test();
    int value() const;

private:
    mutable int v;
};
Test::Test()
{
    v = 1;
}

int Test::value() const
{
    v++;
    return v;
}


int main()
{
    Test A;
    cout <<  A.value() << endl;
    return 0;
}

Aという変数がconstタイプを宣言されたときでもA.vは変更できます.例えば次のコードです.
int main()
{
    const Test A;
    cout <<  A.value() << endl;
    return 0;
}

相対的にmutableというキーワードはあまり使われていません.これらを理解すれば十分です.