15

当在mutable非静态数据成员的声明中使用说明符时,无论对象的其余部分是否被视为 const,数据都是可变的。有了这个事实,我们很容易有这样的印象,即说明符与限定符mutable是同一类东西const,事实证明这不是真的。实际上,语言将mutable说明符分类为存储类说明符。这是非常违反直觉的,因为mutable没有指定存储持续时间。

这个设计决策背后的基本原理是什么?

mutable如果是限定词 ,什么会使它看起来不那么合乎逻辑?

使其成为存储类说明符有什么好处?

4

1 回答 1

11

cv-qualifier s 修改/限制对象的语义;mutable才不是。它作为类型的一部分在几乎所有场景中都是多余的,同时需要更多关于指针转换等的段落。

因此决定使它成为一个decl-specifier而不是type-specifier。由于const可以导致对象被放入写保护的内存中,mutable因此可以导致对象不被放入这样的存储中,这表明它是一个storage-class-specifier

于 2016-05-08T13:24:06.270 回答