しばらく前に、クラスのメンバー変数をmutable
キーワードでマークするコードを見つけました。私が見る限り、const
メソッド内の変数を変更できます。
class Foo
{
private:
mutable bool done_;
public:
void doSomething() const { ...; done_ = true; }
};
これがこのキーワードの唯一の使用ですか、それとも見た目以上のものですか?それ以来、クラスでこの手法を使用して、スレッドセーフな理由で関数をロックboost::mutex
できるミュータブルとしてマークしましたconst
が、正直なところ、少しハックのように感じます。
mutable
:stackoverflow.com/questions/15999123/...
const
(型の)オーバーライドに使用できるようにしたいので、これを行う必要はありません: class A_mutable{}; using A = A_mutable const; mutable_t<A> a;
デフォルトでconst-by-defaultが必要な場合、つまりmutable A a;
(明示的な変更可能)とA a;
(暗黙的なconst)。