2

可能重复:
什么是右值、左值、xvalues、glvalues 和 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.

右值,左值,非右值,非左值有什么区别?

这样的*值有多少种类型?我的意思是我也听说过xvalues。

需要好好理解这一点。这些与临时变量和 lambdas 有什么关系?

对不起,如果我听起来重复、困惑、矛盾和多余。

4

1 回答 1

-2

左值是可以出现在赋值左侧的东西。右值是可以出现在赋值右侧的东西。this是一个非左值表达式,从某种意义上说,您不允许分配给它:例如this = new Foo();,您不能说 。

[编辑补充:上述段落是错误的,尽管它可能是一个有用的助记符并且确实反映了该术语的起源。请参阅下面的评论。然而,下面的参考是正确的。]

请参阅标准的第 3.10 节,至少如果我正在查看的草案具有代表性。[basic.lval] 部分。它的开头是:“每个表达式要么是左值,要么是右值。”

那是在现有的标准中。C++0x 似乎可能会引入:xvalues、glvalues、prvalues。请参阅什么是 rvalues、lvalues、xvalues、glvalues 和 prvalues?更多关于这个。

于 2011-03-15T16:46:50.930 回答