目录
1. 常见错误
左值就是在等号左边的值,右值是等号右边的值。
那么常量就是右值了?!
no!no!no!
2. 准确定义
- 泛左值 (glvalue)(“泛化 (generalized)”的左值)是一个求值可确定某个对象或函数的标识的表达式(简单说就是可以寻地址的数据 (locator value));
- 亡值 (xvalue)(“将亡 (expiring)”的值)是代表它的资源能够被重新使用的对象或位域的泛左值(不可寻址的数据或用来读的数据(
read value)
);- 左值 (lvalue) 是并非亡值的泛左值;
- 纯右值 (prvalue)(“纯 (pure)”的右值)是求值符合下列之一的表达式:
- 右值 (rvalue) 是纯右值或者亡值;
3.结论
那么,
const int kTMP = 0;
一定是左值了。
但
0
就是右值了。