左值、右值、左值引用和右值引用

  • 左值

  左值为一个非临时性对象的表达式,通常为定义的带名字的变量。

  • 右值

  相对于左值,右值是临时性对象的表达式。

  • 左值引用

  以 int 基本类型为例,左值引用的定义:int x = 0;  int &y = x;

  需要注意的是,左值引用的对象 必须是可以修改的左值,下面列举反例:

  const int z = 1;

  int &conf1 = z;  // z为常量,虽为左值但不可修改

  int &conf2 = x + y;  // 表达式 x+y 产生了一个临时变量,临时变量是右值

  int & conf3 = 1;  // 显然,1作为一个数值常量是一个右值

  • 右值引用

  右值引用使用双取地址符 && ,右值引用场景特殊,暂且不讨论

  具体为:

  int &&a = 0;  // 显然,它可以引用右值

posted @ 2023-02-25 16:49  Meetalone  阅读(44)  评论(0)    收藏  举报