博客摘录「 C++11特性——右值引用」2023年4月2日

文章讨论了C++编程中的右值引用概念,包括其特性如右值不能被修改,只能为左值建立引用等。右值引用用于优化性能,例如在移动语义中,通过移动构造函数和移动赋值避免不必要的拷贝。此外,还提到了完美转发,这是一种确保函数参数左右值属性在转发时不丢失的技术。
摘要由CSDN通过智能技术生成

原则:

原则1:右值可以赋给左值,左值不能给右值(左值权限更大)

原则2:右值无法修改

原则3:编译器允许为左值建立引用,不可以为右值建立引用:int &b = num; √      int &b = 10; ×

右值引用 :

1)右值引用必须要进行初始化

2)不能使用左值进行初始化

3)右值引用可以对右值进行修改

好处:

当返回值为右值引用时,会把返回的临时变量中的内存居为己用,仍保持了有效性,也避免了拷贝(左值引用的用处)。

应用:

移动语义:移动语义具体实现是基于移动构造移动赋值,而移动构造函数和移动赋值函数都需要形参为右值引用类型。(move函数强制转换左值成右值)

完美转发:函数模板在向其他函数传递自身形参时,如果相应实参是左值,它就应该被转发为左值;同样如果相应实参是右值,它就应该被转发为右值。作用是保留在其他函数指针对转发而来的参数的左右值属性进行不同处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值