C++11 新特性及原理(二、右值引用及移动构造函数)

C++11 新特性及原理(二、右值引用及移动构造函数)

目录

C++11 新特性及原理(二、右值引用及移动构造函数)

四、右值引用及移动构造函数(提高性能)

1、右值引用及右值的概念

2、move语义

3、移动构造函数


接上篇C++11 新特性及原理(一、基础篇)文章继续,该篇文章内容较多请读者耐心去品味,定能掌握右值引用及移动构造函数的精髓,在以后的代码开发中将性能提高到极致。

四、右值引用及移动构造函数(提高性能)

1、右值引用及右值的概念

右值:通常是指临时的对象,它们只在当前的语句中有效。

右值引用 (Rvalue Referene) 是 C++11引入的新特性,它是用来支持转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面:

1、消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。

2、能够更简洁明确地定义泛型函数。

有了右值引用后,我们就能对右值进行修改与操作,看下列示例 :

void AddValue(int& i) {
 i+=2;
 std::cout << "LValue AddValue: " << i << std::endl; 
}

void AddValue(int&& i) {
 i+=10;
 std::cout << "RValue AddValue: " << i << std::endl; 
}

void ForwardValue(int&& i) { 
 AddValue(i); 
}

int main() { 
 int a = 1; 
 AddValue(a);            // LValue AddValue: 3
 AddValue(1);            // RValue AddValue: 11 
 ForwardValue(2);        // LValue AddValue: 4
}

虽然 2 这个立即数在函数 forward_value 接收时是右值,但到了 process_value 接收时,变成了左值。

2、move语义

左值(引用)可以通过std::move()强制类型转换成右值引用。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值