12

C++ でクラス メンバー変数を として宣言できないのはなぜstatic mutableですか? 何かのようなもの

static mutable int t; //This won't compile

私にとって、そのような宣言を禁止する理由はありません。たとえば、グローバルなクラス全体の統計を維持するなどの理由で、(論理的に) const メソッドによって変更できる静的変数があると便利な場合があります。したがって、これは C++ の設計ミスのようなもので、不必要に複雑であるか、私にはわからない実用的または理論的な理由があるかのいずれかです。

4

2 に答える 2

29

クラスの非 const 静的メンバーは、クラスの任意の (const および非 const) メソッドによって既に変更できます。で宣言する必要も意味もありませんmutable。それは絶対に何も達成しません。

于 2010-10-17T02:07:55.067 に答える
1

mutable キーワードを使用すると、「const」、したがって非静的メンバー関数が、そのようにマークされた非静的メンバー変数 (つまり、変更可能) を変更できます。静的関数を const にすることはできず、const メンバー関数は非 const 静的メンバーを変更できます。これは多少混乱することは承知していますが、変更可能な静的メンバー変数を許可する必要がないのはこのためです。

于 2010-10-17T02:09:44.537 に答える