C++基础——右值引用

简介:

我们知道C++有引用,即取地址&运算符。那右值引用是什么?我们可以认为=左边为左值,可以获取左边地址,右边为右值,C++11里面新定义了一个概念右值引用,即&&;需要注意的是,右值引用不会影响值的变化。

用途:

1、转移功效

// 比如我们常用string对象去初始化另一个变量对象,那么在这个过程中会调用str的拷贝构造函数,然后增加
// 一个临时变量,分配内存,完成后在释放掉,
string str1 = 10;
string str2 =str1; // or getstring(str1)  
// && 会将内存直接移动到str3中,间接减少内存分配和释放步骤
string &&str3 =  getstring(str1); 

2、匿名函数起别名

int a = 10;
int b = 20;
int &&c = a + b; //ok
// int &&c = a; // err  还是左值
const int &&c = 20;c是20的匿名对象
int &&c;    //err 没有初始化

 C++11将右值区分为了:

  • 纯右值:纯右值是C++98中右值的概念,用于识别临时变量和一些不跟对象关联的值。比如:常量、一些运算表达式(1+3)等。
  • 将亡值:声明周期将要结束的对象。比如:在值返回时的临时对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路奇怪

有钱出钱,没钱多出编程主意啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值