c++2.0学习---右值引用/优化

右值引用

概念

  • 左值

    可以出现在operator = 左边的

  • 右值

    只能出现在operator = 右边的

  • 右值不可取地址


常用的标准库函数

  • std::move()

    该函数只有让左值绑定到右值引用的函数上的作用,除此之外,没有任何额外的功能

    使用该函数并没有任何其他作用,本身不产生优化

  • std::forward()

    该函数目的是实现完美转交--即左值传递后仍然为左值,右值传递后仍然为右值

    原因参照左值引用和右值引用均为左值, (也可以说是有名字的变量都为左值)


常见右值情况

  • a + b

  • 临时对象

  • 左值通过std::move()函数绑定为右值


使用场景

  • 需要对右值单独进行优化,一般是使用浅拷贝

    需要在右值引用的重载函数中单独实现

    • 实现时需要注意传递后需要改变原变量的指向,否则右值传递后会立即销毁

      如果还指向原变量内容,则原变量的内容就会被销毁,导致后续操作产生未定义行为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值