关于C++11右值引用

C++11引入右值引用后查看了很多资料,但都过于啰嗦,不能一针见血,这里用最简单的方式阐述一下

右值引用类型为 T&& 。如
T&& right_ref = ?
右边的 ?如果是右值就可以了。如果想用左值,就需要std::move(左值)

那么右值引用有什么用呢?答案是移动构造的参数用的是右值引用,比如
class A
{
public:
A(A&& other)
{}
}
上面这个构造函数就是移动构造函数。也就是当我们构造一个函数的时候。如果参数是右值引用。那么就会触发移动构造。移动构造就会掏空other(一般是指针之类的直接夺过来)。这样就会比拷贝构造高效了很多。也就是说std::move(左值)不会对左值有任何影响,只是为了让其作为参数来触发移动构造,在移动构造里才会对左值产生掏空的作用。

那么std::forward(?)是做什么的呢?
因为如果? 为 T&&时,是不会触发移动构造的,所以要经过std::forward(T&&)“完美转发”会才能触发移动构造

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值