【C++】C++中的左值引用和右值引用

1、什么是左值和右值?

  • 左值就是:非临时的变量,是有名字的,是可以取地址的
  • 右值就是:临时的变量,没有名字的,不能取地址的
  • 例如:int a = b + c ,a 就是左值,其变量名为 a ,通过 &a 可以取得该变量的地址;而表达式 b + c 和函数返回值 int fun() 就是右值,在其被赋值给某一变量前,我们不能通过变量名找到它,&(b + c) 这样的操作则不会通过编译。
  • 所以一般来说,临时值,函数返回值,立即数这些都属于右值;而非匿名对象(非临时变量),以引用返回的函数值(相当于函数返回值的临时变量定义为引用),const常量都属于左值

2、左值引用

  • 其实就是普通的引用:即对左值的引用
int a = 10;
int &b = a;  // 定义一个左值引用变量
b = 20;      // 通过左值引用修改引用内存的值
  • 由于左值引用是对左值的引用,那么该值一定是可以取地址的
  • 但是,如果无法取地址,可以用常引用。但使用常引用后,我们只能通过引用来读取数据,无法去修改数据,因为其被 const 修饰成常量引用了。
const int& c = 10;

3、右值引用

  • 右值引用是 C++11 新增的特性,右值引用会将新变量绑定到右值,绑定到右值以后,本来会被销毁的右值的生存期会延长到与新变量的生存期一样。
  • 定义右值引用的格式如下:
类型 && 引用名 = 右值表达式;
int &&c = 10;

参考链接:https://zhuanlan.zhihu.com/p/97128024

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值