对象第复制operator=
类机制中有默认的对象复制操作符=,自定义对象复制需要注意一个问题,如果有遇到指针指向的资源是需要释放的,这时需要毫不留情释放,否则内存空间的泄露就不可避免。复制操作与拷贝构造函数的参数是一致的,只是在功能上复制操作只管复制不管构造。赋值操作返回必须是引用返回,这是为了与复制操作符语义一致,因为复制操作的结果是一个可以地径操作的左值。
#include<iostream>
using namespace std;
class Student{
char* pname;
public:
Student(char *pname = "NoName"){
cout<<"成功构造"<<endl;
this->pname = new char[strlen(pname)+1];
strcpy(this->pname, pname);
}
void print(){cout<<pname<<endl;}
//--------------------------------------------
Student& operator=(const Student&s){
if(this==&s)
return *this;
delete []pname;
this->pname=new char[strlen(s.pname)+1];
strcpy(pname,s.pname);
return *this;
}
//----------------------------------------------
~Student(){
delete[]pname;
}
};
int main(){
Student a("LiLy");
Student b;
b=a;
b.print();
return 0;
}
对象第复制operator=的更多相关文章
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- js 对象深复制,创建对象和继承
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...
- Java对象的复制
Java中对象的赋值分为浅拷贝和深拷贝 1.对象浅拷贝 public class CloneTest{ static class Emp{ String name; int age; Date h ...
- python-socket.error[10054]:对象的复制
1.socket.error[10054],对方强制关闭了连接 在用socket.recvfrom时,若事先没有bind时, 先使用socket.sendto,socket.recvfrom 有时会出 ...
- js对象的复制,传递,新增,删除和比较
当我们把一个某个对象拷贝或者传递给某个函数时,往往传递的是该对象的引用. 因此我们在引用上做的任何改动,都将会影响到它所引用的原对象. 复制,拷贝 var o = { add: 'Changdao ...
- JavaScript 中的对象深度复制(Object Deep Clone)
JavaScript中并没有直接提供对象复制(Object Clone)的方法. JavaScript中的赋值,其实并不是复制对象,而是类似`c/c++`中的引用(或指针),因此下面的代码中改变对象b ...
- java对象深复制、浅复制(深拷贝、浅拷贝)的理解
先看一个例子 User user1 = new User(); user1.setId("111"); Map<String, User> map1 = new Has ...
- Java——对象的复制、克隆、序列化
原创作者: https://blog.csdn.net/lmb55/article/details/78277878对象克隆(复制)假如说你想复制一个简单变量.很简单: int apples = 5; ...
- 一个高性能的对象属性复制类,支持不同类型对象间复制,支持Nullable<T>类型属性
由于在实际应用中,需要对大量的对象属性进行复制,原来的方法是通过反射实现,在量大了以后,反射的性能问题就凸显出来了,必须用Emit来实现. 搜了一圈代码,没发现适合的,要么只能在相同类型对象间复制,要 ...
随机推荐
- [netty4][netty-transpot]Channel体系分析
Channel体系分析 接口与类结构体系 -- [I]AttributeMap, ChannelOutboundInvoker, Comparable -- [I]AttributeMap ---- ...
- [转载]robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例
原文地址:robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例运行作者:机器,猫 最近一直在完成一些robotium的小功能,用来更方便的完成一些小功能的测试,或者可以说用来娱乐 ...
- Mysql Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
Mysql update error: Error Code: 1175. You are using safe update mode and you tried to update a table ...
- 用例UML图
用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. [用途]:帮助开发团队以一种可视化的方式理解系统的功能需求. 用例图中涉及的关系有:关联.泛 ...
- LAMP第二部分apache的配置
1. 下载discuz! mkdir /data/wwwcd /data/wwwmv /root/Discuz_X3.2_SC_GBK.zip .wget http://download.comsen ...
- 新blog新帖><
欢迎来到Mychael的无声乐章 今天搬到了博客园,以后就在这个安谧的地方创作啦OvO 把以前的博客搬了过来 以前的分类似乎崩了.... [以前一些LaTex公式可能会崩掉,那就回我原博客看吧Mych ...
- FTB操作
一些参考案例下面是一些常用的ftp操作文件的方法 案列1 using System; using System.Collections.Generic; using System.Text; usin ...
- Flask deployment on gunicorn with flask script
https://stackoverflow.com/questions/34265870/flask-deployment-on-gunicorn-with-flask-script 依赖 Flask ...
- webpack 样式模块打包深入学习
1. style-loader css-loader sass-loader 分别的作用 style-loader: 将所有的样式嵌入到dom的style属性当中. css-loader: 将css当 ...
- Lis(bzoj 3532)
Description 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案. 如果有多种方案,请输出 ...