关于左值和右值,好像没有一个明确且容易理解的定义,下面引用c++ primer 第5版里面的说明。
第121页重要描述如下:
可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存的位置)。
第149页描述如下:
左值是指那些求值结果为对象或函数的表达式。一个表示对象的非常量左值可以作为赋值运算符的左侧运算对象。
第150页描述如下:
右值是指一种表达式,其结果是值而非值所在的位置。
第471页描述如下:
左值持久;右值短暂。
左值有持久的状态,而右值要么是字面常量,要么是在表达式求值过程中创建的临时对象。