当在非静态数据成员的声明中使用mutable
说明符时,无论对象的其余部分是否被视为const,数据都是可变的。有了这个事实,我们可能很容易产生mutable
说明符与const
限定符相同的印象,结果证明这不是真的。实际上,该语言将mutable
说明符分类为存储类说明符。这非常违反直觉,因为mutable
没有指定存储持续时间。
这项设计决定背后的理由是什么?
如果mutable
是限定符,那么它的逻辑性会不会低于它?
使其成为存储类说明符有什么好处?
答案 0 :(得分:11)
cv-qualifier 修改/限制对象的语义; mutable
没有。在几乎所有情况下,它都是类型的一部分是多余的,同时需要更多关于指针转换的段落等。
因此,决定使其成为 decl-specifier ,而不是类型说明符。由于const
可以将对象放入写保护内存,mutable
可以导致对象不被放入此类存储中,这表明它是存储类说明符