当在非静态数据成员的声明中使用mutable
说明符时,无论对象的其余部分是否被视为const,数据都是可变的。有了这个事实,我们可能会轻易地感到mutable
限定符与const
限定符属于同一类事物,事实证明这是不正确的。实际上,该语言将mutable
说明符分类为存储类说明符。这是很违反直觉的,因为mutable
没有指定存储持续时间。
这个设计决定背后的原理是什么?
如果mutable
是一个限定词,那么什么会使它看起来不那么逻辑呢?
使它成为存储类说明符有什么优点?
最佳答案
cv限定词修改/限制对象的语义; mutable
没有。在几乎所有情况下,它都是该类型的一部分,而同时需要更多有关指针转换等的段落。
因此,决定将其设为不是类型说明符的decl-specifier。由于const
可以将对象放入写保护存储器中,因此mutable
可以使对象不放入此类存储中,这表明它是存储类说明符。
关于c++ - 为什么将可变说明符分类为存储类说明符,而不是限定符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37096836/