C++类对象的复制-拷贝构造函数.doc

上传人:hw****26 文档编号:3539913 上传时间:2019-06-03 格式:DOC 页数:8 大小:40KB
下载 相关 举报
C++类对象的复制-拷贝构造函数.doc_第1页
第1页 / 共8页
C++类对象的复制-拷贝构造函数.doc_第2页
第2页 / 共8页
C++类对象的复制-拷贝构造函数.doc_第3页
第3页 / 共8页
C++类对象的复制-拷贝构造函数.doc_第4页
第4页 / 共8页
C++类对象的复制-拷贝构造函数.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、C+类对象的复制拷贝构造函数出处:PConline 2005 年 03 月 09 日 作者:管宁 责任编辑:xietaoming文章导读:如果一个类拥有资源(堆,或者是其它系统资源 ),当这个类的对象发生复制过程的时候,这个过程就可以叫做深拷贝,反之对象存在资源但复制过程并未复制资源的情况视为浅拷贝。在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如: int a = 10; int b =a; 自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如:#include using namespace st

2、d; class Test public: Test(int temp) p1=temp; protected: int p1; ; void main() Test a(99); Test b=a; 普通对象和类对象同为对象,他们之间的特性有相似之处也有不同之处,类对象内部存在成员变量,而普通对象是没有的,当同样的复制方法发生在不同的对象上的时候,那么系统对他们进行的操作也是不一样的,就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的,在上面的代码中,我们并没有看到拷贝构造函数,同样完成了复制工作,这又是为什么呢?因为当一个类没有自定义的拷贝构造函数的时候系统会自动提供一个

3、默认的拷贝构造函数,来完成复制工作。 下面,我们为了说明情况,就普通情况而言(以上面的代码为例 ),我们来自己定义一个与系统默认拷贝构造函数一样的拷贝构造函数,看看它的内部是如何工作的! 代码如下:#include using namespace std; class Test public: Test(int temp) p1=temp; Test(Test class Internet public: Internet(char *name,char *address) cout using namespace std; class Internet public: Internet()

4、; Internet(char *name,char *address) cout using namespace std; class Internet public: Internet(char *name,char *address) cout using namespace std; class Internet public: Internet(char *name,char *address) cout“载入构造函数“endl; strcpy(Internet:name,name); Internet(Internet strcpy(Internet:name,temp.name); cin.get(); Internet() cout“载入析构函数!“; public: char name20; char address20; ; void main() Internet couta.name; cin.get(); 引用本身是对象的别名,和复制并没有关系,所以不会调用拷贝构造函数,但要注意的是,在 c+看来: Internet 是等价与: Internet a(“中国软件开发实验室“,“dev-“); 的,注意观察调用析构函数的位置(这种情况是在 main()外调用,而无名对象本身是在 main()内析构的) 。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。