12

为什么或出于什么原因不能在 C++ 中将类成员变量声明为static mutable?就像是

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

对我来说,没有理由禁止这样的声明。例如,出于维护全局类范围的统计信息等原因,拥有可以通过(逻辑上)const 方法更改的静态变量可能很方便。因此,这要么是 C++ 中的一种错误设计并且不必要地复杂,要么存在我看不到的实际或理论原因。

4

2 回答 2

29

类的非常量静态成员已经可以被类的任何(常量和非常量)方法修改。用 . 声明它没有必要也没有意义mutable。那将一事无成。

于 2010-10-17T02:07:55.067 回答
1

mutable 关键字允许“const”因此非静态成员函数更改标记为这样的非静态成员变量(即,可变的)。静态函数不能是 const 并且 const 成员函数可以更改非 const 静态成员。我知道这有点令人困惑,但正因为如此,没有必要允许可变静态成员变量。

于 2010-10-17T02:09:44.537 回答