我知道type of this
是一个prvalue("纯" rvalue)指针,并且它可以成为一个指针指向const和/或指针指向-volatile(影响对其实例变量的访问),方法是将关键字const
或volatile
附加到它所属的函数定义的末尾。
我也知道this
有时(错误地)被描述为一个常量指针,或许可以作为一种说法"你不能分配给this
& #34 ;.作为右值,它本质上是不可分配的,因此不需要const
rvalue的概念。
我也知道在C ++ 11中,有些情况下rvalue或左值可以影响呼叫解决,但是我已经尝试了解可能性,我不确定是否在那种情况下,调用this
是一个右值指针而不是一个const
左值指针的解析实际上很重要。
从程序员的角度来看,是否存在这种区别产生真正差异的情况,例如可以使用右值指针而无法使用const
左值指针的上下文,其中a const
左值指针可以用于右值指针不能,或者差异影响呼叫解决的位置?
答案 0 :(得分:6)
this
作为prvalue的明显后果是&this
是非法的。因此,内置的一元运算符&
举例说明“可以使用左值指针不能使用的左值指针”。出于同样的根本原因,不可能直接绑定引用this
。
此外,this
的prvalue-ness意味着this
本身不能是const
或volatile
,因为标量rvalues不能具有cv限定类型。
基于这些区别,很难建立非深奥的现实代码示例。