移动构造函数

本文介绍了移动构造函数在C++中的概念和作用,通过举例说明了深拷贝构造函数和移动构造函数的区别。移动构造函数能够更有效地处理资源转移,避免了不必要的复制操作。文章还提到了std::move()在将左值转换为右值引用以利用移动构造函数方面的应用。
摘要由CSDN通过智能技术生成

文章目录
一、引言
二、左值和右值
三、深拷贝构造函数
四、右值引用
五、移动构造函数
六、std::move()
七、参考资料
一、引言
移动构造函数是什么?先举个例子,你有一本书,你不想看,但我很想看,那么我有哪些方法可以让我能看这本书?有两种做法,一种是你直接把书交给我,另一种是我去买一些稿纸来,然后照着你这本书一字一句抄到稿纸上。

显然,第二种方法很浪费时间,但这正是有些深拷贝构造函数的做法,而移动构造函数便能像第一种做法一样省时,第一种做法在 C++ 中叫做完美转发。

二、左值和右值
何为左值?能用取址符号 & 取出地址的皆为左值,剩下的都是右值。

而且,匿名变量一律属于右值。

int i = 1; // i 是左值,1 是右值

int GetZero {
int zero = 0;
return zero;
}
//j 是左值,GetZero() 是右值,因为返回值存在于寄存器中
int j = GetZero();

//s 是左值,string(“no name”) 是匿名变量,是右值
string s = string(“no name”);

三、深拷贝构造函数
用 g++ 编译器编译下列代码时记得加上参数 -fno-elide-constructors。

#include
#include

using namespace std;

class Integer {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值