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

When does it matter that `this` is an rvalue?

本文关键字:一个 这个 什么时候      更新时间:2023-10-16

我知道this的类型是一个 prvalue("纯"右值(指针,并且可以通过将关键字constvolatile附加到它所属的函数定义的末尾,使其成为指向常量和/或指向易失性的指针(影响对其实例变量的访问(。

我也知道this有时(错误地(被描述为常量指针,也许是说"你不能为this赋值"的一种方式。作为右值,它本质上是不可分配的,因此不需要const右值的概念。

我也知道,在 C++11 中,在某些情况下,右值或左值会影响呼叫解析,但我试图通过各种可能性,我不确定是否存在调用解析实际上很重要的情况this是右值指针而不是const左值指针。

从程序员的角度来看,是否存在这种区别会产生真正差异的情况,例如可以使用右值指针而不能使用const左值指针的上下文,可以使用const左值指针而右值指针不能使用,或者差异影响调用解析?

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

此外,this的prvalue-ness意味着this本身不能constvolatile,因为标量右值不能有CV限定的类型。

基于这些区别构建非深奥的现实生活中的代码示例可能很困难。

相关文章: