博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动构造函数和移动赋值与拷贝构造函数和赋值构造函数的比较
阅读量:5082 次
发布时间:2019-06-13

本文共 658 字,大约阅读时间需要 2 分钟。

首先看拷贝构造函数:

//拷贝构造函数A(A& t){	if(t.text!=NULL)	{		int len=strlen(t.text);		text=new char[len+1];		strcpy(text,t.text);	}}

拷贝构造函数中实现了深拷贝处理。再看移动构造函数:

//移动构造函数A(A&& t){	if(t.text!=NULL)	{		text=t.text;		t.text=NULL;	}} 

代码构造和拷贝构造函数类似,但是内存的处理不是拷贝而是转移。注意参数类型是右值引用。

移动赋值运算符

赋值运算符的情况和构造函数类似,还是先考察普通的赋值运算符:

//拷贝赋值运算符A& operator=(const A& rhs){	if(this!=&rhs)	{		free();		if(rhs.text!=NULL)		{			int len=strlen(rhs.text);			text=new char[len+1];			strcpy(text,rhs.text);		}	}	return *this;}

再看移动赋值运算符:

//移动赋值运算符A& operator=(A&& rhs)noexcept{	if(this!=&rhs)	{		free();		text=rhs.text;		rhs.text=NULL;	}	reeturn *this;}

转载于:https://www.cnblogs.com/wuyepeng/p/9787993.html

你可能感兴趣的文章
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
Window 的引导过程
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>