C ++中的静态可变成员变量?

时间:2010-10-17 02:04:29

标签: c++ static member mutable

为什么或为什么不能在C ++中将类成员变量声明为static mutable?像

这样的东西
static mutable int t; //This won't compile

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

2 个答案:

答案 0 :(得分:24)

类的非常量静态成员已经已被类的任何(const和非const)方法修改。用mutable声明它是没有必要也没有意义的。那绝对没有任何意义。

答案 1 :(得分:1)

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