早期的C++里只有“左值”,C++11/14标准引入了新的“右值”,他们是现代C++中非常重要的概念,贯穿整个标准。
1,定义
- 所有表达式的结果不是左值就是右值
- 左值(lvalue)是一个函数或者对象实例
- 广义左值(glvalue,generalized lvalue)包括左值和失效值
- 失效值(xvalue,eXpiring value)是生命周期即将结束的对象
- 右值(rvalue)包括失效值、临时对象以及不关联对象的值
- 纯右值(prvalue)是非失效值的那些右值
expression
|
glvalue rvalue
| |
lvalue xvalue prvalue
通俗的所