可能重复:
What are rvalues, lvalues, xvalues, glvalues, and prvalues?
The standard states:
3.2 The this pointer
1 In the body of a non-static (9.3) member function,
the keyword this is a non-lvalue expression whose value is the address of the
object for which the function is called.
rvalue,lvalue,non-rvalue,non-lvalue有什么区别?
有多少种类型的*值?我的意思是我也听到了xvalues。
需要了解这一点。这些与临时和羔羊有什么关系?
对不起,如果我听起来重复,困惑,矛盾和冗余。
答案 0 :(得分:-2)
左值可以出现在作业的 l 后方。右值可以出现在作业的 r 右侧。 this
是一个非左值表达式,因为您不允许分配给它:例如,您不能说this = new Foo();
。
[编辑补充:以上段落是错误的,虽然它可能是一个有用的助记符,但确实反映了该术语的起源。见下面的评论。但是,下面的参考文献是正确的。]
参见标准第3.10节,至少如果我所看的草案具有代表性。部分[basic.lval]。它开始:“每个表达式都是左值或左值。”
这是现有标准。 C ++ 0x似乎可能会引入:xvalues,glvalues,prvalues。有关详细信息,请参阅What are rvalues, lvalues, xvalues, glvalues, and prvalues?。