这个指针是r值吗?

时间:2014-11-23 23:02:39

标签: c++

我所知道的是:

  1. L值是一个表达式(可以是单个变量表达式,即x),它具有一些地址(意味着它存储在存储器中并且可以被引用,超出当前表达式的范围)。

  2. “this pointer”指向对象本身,这意味着它保存对象的地址,这反过来意味着它是L值(根据定义在第1点)。
  3. 我想知道的是:

    1. “这个指针”真的是L值吗?因为在帖子“Type of 'this' pointer”中,人们都说“这个指针”不是L值

    2. 如果“this pointer”不是L值,那么它是R值还是其他什么?

1 个答案:

答案 0 :(得分:5)

lvalues 的基本描述从一个天真的角度来看是一个相当不错的一般规则,但是在 lvalue -to- rvalue <存在的情况下它会崩溃/ em>用于表达式评估的转换,并且它没有考虑明显的例外情况,例如this关键字。

由于this本身不是一个指针,你可以修改或认为它真的是&#34;存储&#34;任何地方 - 回想一下,它的值是由编译器根据上下文自动确定的 - 委员会决定最好将其作为 rvalue 表达式。

因此,关于内存地址的推理不太正确:this,作为指针,当然包含内存地址作为其物理值(在典型系统上)但是没有&# 39;意思是它有自己的一个。请尝试使用其地址:&this无法正常工作。