C++ 左值

示例

左值表达式是具有标识但不能隐式移出的表达式。其中包括由变量名,函数名,内置的取消引用运算符使用的表达式以及引用左值引用的表达式。

典型的左值只是一个名称,但是左值也可以采用其他形式:

struct X { ... };

X x;         // x是一个左值
X* px = &x;  // px是左值
*px = X{};   // * px也是左值,X {}是右值

X* foo_ptr();  // foo_ptr()是一个prvalue
X& foo_ref();  // foo_ref()是一个左值

另外,虽然大多数文字(例如4,'x'等)是prvalues,但是字符串文字是lvalues。