当一个对象被用作右值时,用的是对象的值(内容);当对象被用作左值时,用的是对象的身份(在内存中的位置)
右值=值内容,左值=值位置
- 赋值运算符运算对象为左值,得到的结果也为左值
- 取地址符运算对象为左值,得到的指针结果为右值
- 解引用和下标运算符的求值结果为左值
- 内置类型和迭代器的递增和递减运算符的运算对象为左值,前置版本的结果也为左值
decltype关键字与左/右值
如果表达式的求值结果为左值,decltype作用于该表达式得到一个引用类型
例如:
p是int 类型
decldype(p) 解引用产生的是左值,则得到的类型为int&引用类型
decldype(&p)得到的类型为int** 取地址产生的是右值,结果是一个指向整型指针的指针