左值与右值

在C中,左值指的是既能够出现在等号左边也能出现在等号右边的表达式,右值指的则是只能出现在等号右边的表达式。

在C ++中,每个表达式都会产生一个左值或右值,因此每个表达式都称为左值或右值表达式。左值的一个示例是标识符。作为另一示例,对对象的引用是左值。每个不是左值的表达式都是一个右值。一个很好的例子是产生算术值的表达式。一种直观的方法是将表达式视为函数,然后可以将左值视为函数返回引用的结果。

例子:

  1. 下标运算符是形式 T&operator [](T *,ptrdiff_t) 的函数, 因此 A [0] 是一个左值,其中 是数组类型。

  2. 解引用运算符是形式 T&operator *(T *) 的函数, 因此 * p 是左值,其中 是指针类型。

  3. 取反运算符的形式为 T运算符-(T) ,因此 -x 是右值。

一些要用到左值的运算符:

  • 赋值运算符。
  • 取地址符。
  • 内置解引用运算符、下标运算符、迭代器解引用运算符、string和vector的下标运算符。
  • 内置类型和迭代器的递增递减运算符。

了解更多(依次阅读最好):

https://www.cnblogs.com/xzxl/p/7652612.html

https://accu.org/journals/overload/12/61/kilpelainen_227/

 

posted @ 2021-03-02 22:18  乾月十二  阅读(275)  评论(0编辑  收藏  举报