什么时候“这个”是一个右值是多么重要?

时间:2016-02-09 22:44:14

标签: c++ c++11 this language-lawyer

我知道type of this是一个prvalue("纯" rvalue)指针,并且它可以成为一个指针指向const和/或指针指向-volatile(影响对其实例变量的访问),方法是将关键字constvolatile附加到它所属的函数定义的末尾。

我也知道this有时(错误地)被描述为一个常量指针,或许可以作为一种说法"你不能分配给this& #34 ;.作为右值,它本质上是不可分配的,因此不需要const rvalue的概念。

我也知道在C ++ 11中,有些情况下rvalue或左值可以影响呼叫解决,但是我已经尝试了解可能性,我不确定是否在那种情况下,调用this是一个右值指针而不是一个const左值指针的解析实际上很重要。

从程序员的角度来看,是否存在这种区别产生真正差异的情况,例如可以使用右值指针而无法使用const左值指针的上下文,其中a const左值指针可以用于右值指针不能,或者差异影响呼叫解决的位置?

1 个答案:

答案 0 :(得分:6)

this作为prvalue的明显后果是&this是非法的。因此,内置的一元运算符&举例说明“可以使用左值指针不能使用的左值指针”。出于同样的根本原因,不可能直接绑定引用this

此外,this的prvalue-ness意味着this本身不能是constvolatile,因为标量rvalues不能具有cv限定类型。

基于这些区别,很难建立非深奥的现实代码示例。