当在非静态数据成员的声明中使用mutable说明符时,无论对象的其余部分是否被视为const,数据都是可变的。有了这个事实,我们可能会轻易地感到mutable限定符与const限定符属于同一类事物,事实证明这是不正确的。实际上,该语言将mutable说明符分类为存储类说明符。这是很违反直觉的,因为mutable没有指定存储持续时间。

这个设计决定背后的原理是什么?

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

使它成为存储类说明符有什么优点?

最佳答案

cv限定词修改/限制对象的语义; mutable没有。在几乎所有情况下,它都是该类型的一部分,而同时需要更多有关指针转换等的段落。

因此,决定将其设为不是类型说明符的decl-specifier。由于const可以将对象放入写保护存储器中,因此mutable可以使对象不放入此类存储中,这表明它是存储类说明符。

关于c++ - 为什么将可变说明符分类为存储类说明符,而不是限定符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37096836/

10-11 22:28