しばらく前に、クラスのメンバー変数を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)。