const
和volatile
在C规范中称为cv-qualifier
。specifier
和qualifier
(cv-qualifier
)之间的确切区别是什么?限定词也是限定词吗?
是否有必要qualifier
仅具有左值?
除cv-qualifier
之外,还有哪些限定词?
我的上述理解有意义吗?
最佳答案
大多数都没有道理。
指定符和限定符在C++标准中定义。限定符只是说明符的组成部分。例如,声明中的类型说明符可以包含cv限定符。我看不出在此主题上引用标准中所有内容的原因。
Cv限定词不限于左值。类类型的右值也可以是cv限定的。可以对非类类型的右值进行cv限定,但是它将无效并且将被忽略。
您在示例中使用const
显示的foo
限定符只是一种语法形式,实际上意味着const限定符将应用于this
方法的隐含foo
参数:const A* this
。即在这种情况下,它确实限定了一个左值,但它是*this
,而不是foo
。
限定词一词也出现在限定名称的上下文中。像some_class::some_member
(或some_namespace::some_name
)之类的名称称为合格名称,并且some_class::
部分是限定符。
如果某物是左值然后可以对其进行修改的想法是完全错误的。有可修改的左值和不可修改的左值。声明为const int i = 5
的对象是左值,但您不能对其进行修改。普通函数也是C++中的左值,但是您不能修改函数。
关于c++ - 指定符和限定符之间的相关性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3610943/