constvolatile在C规范中称为cv-qualifier
specifierqualifier(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/

10-11 18:59