拷贝构造函数
来源:互联网 发布:clover软件官网 编辑:程序博客网 时间:2024/05/29 04:45
类机制中有默认的赋值操作符,只要定义了类,就可以进行对象的赋值操作。
Person p1("Jack");
Person p2;
p2=p1;
但是默认的赋值操作符只管对象本体的复制,如果对象之间要做深拷贝的话,则必须自定义赋值操作符。自定义赋值操作符必须注意,原来的对象已经存在,要先将原来的资源释放掉,然后再进行深拷贝的复制。
//---------main.cpp------------#include <iostream>#include <string>//拷贝构造函数using namespace std;class Person{private:char *pName;public:Person(char *pN="noName"){std::cout<<"constructing "<<pN<<endl;pName=new char[strlen(pN)+1];if(pName)strcpy(pName,pN);}Person(const Person &s){std::cout<<"copy constructing "<<s.pName<<endl;pName=new char[strlen(s.pName)+1];if(pName) strcpy(pName,s.pName);}Person & operator=(Person &s) //前置 ( )={std::cout<<"assigning "<<s.pName<<endl;if(this==&s) return s;delete[] pName;pName = new char[strlen(s.pName)+1];if(pName) strcpy(pName,s.pName);}~Person(){std::cout<<"destructing "<<pName<<endl;}};int main(int argc,char **argv){Person p1("Jack");Person p2("Sam");p2=p1; //等同于 p2.operator=(p1);return 0;}
constructing Jack
constructing Sam
assigning Jack
destructing Jack
destructing Jack
请按任意键继续. . .
1
0 0
- 构造函数、拷贝构造函数
- 拷贝构造函数,构造函数
- 拷贝构造函数--默认拷贝构造函数
- 构造、拷贝构造函数基础
- 拷贝构造函数 深拷贝 浅拷贝
- 拷贝构造函数(深拷贝,浅拷贝)
- 拷贝构造函数浅拷贝深拷贝
- 拷贝构造函数,浅拷贝,深拷贝
- 拷贝构造函数 深拷贝 浅拷贝
- 拷贝构造函数----深拷贝、浅拷贝
- 拷贝构造函数
- 拷贝构造函数
- 浅析拷贝构造函数
- 拷贝构造函数
- 拷贝构造函数
- C++拷贝构造函数
- C++拷贝构造函数
- 拷贝构造函数
- Single Number
- c#ajax请求返回数据处理(二)
- servlet与filter的url-pattern设置方式及映射规则
- 【Jquery】jquery为select添加option
- Camera构图之三分法
- 拷贝构造函数
- 【RMAN】数据库备份之常用备份命令
- storm集群使用经验
- XShell连接不了虚拟机linux Could not connect to '127.0.0.1' (port 22): Connection failed.
- iOS 隐藏/去掉 导航栏返回按钮中的文字
- OFBIZ 账户与Party PartyRelationship关系分析
- NOI库7650 不定方程求解
- 磁盘驱动器卷标名称
- QT5 学习之路05---QT5基本对话框2