在C中,左值指的是既能够出现在等号左边也能出现在等号右边的表达式,右值指的则是只能出现在等号右边的表达式。
在C ++中,每个表达式都会产生一个左值或右值,因此每个表达式都称为左值或右值表达式。左值的一个示例是标识符。作为另一示例,对对象的引用是左值。每个不是左值的表达式都是一个右值。一个很好的例子是产生算术值的表达式。一种直观的方法是将表达式视为函数,然后可以将左值视为函数返回引用的结果。
例子:
下标运算符是形式 T&operator [](T *,ptrdiff_t) 的函数, 因此 A [0] 是一个左值,其中 A 是数组类型。
解引用运算符是形式 T&operator *(T *) 的函数, 因此 * p 是左值,其中 p 是指针类型。
取反运算符的形式为 T运算符-(T) ,因此 -x 是右值。
了解更多(依次阅读最好):
https://www.cnblogs.com/xzxl/p/7652612.html
https://accu.org/journals/overload/12/61/kilpelainen_227/
原文:https://www.cnblogs.com/qyse/p/14457525.html