- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
拷贝构造函数
一 . 什么是拷贝构造函数
首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:
int a = 100;
int b = a;
而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。
下面看一个类对象拷贝的简单例子。
#include iostream
using namespace std;
class CExample {
private:
int a;
public:
// 构造函数
CExample(int b)
{ a = b;}
// 一般函数
void Show ()
{
coutaendl;
}
};
int main()
{
CExample A(100);
CExample B = A; // 注意这里的对象初始化要调用拷贝构造函数,而非赋值
B.Show ();
return 0;
}
运行程序, 屏幕输出 100。从以上代码的运行结果可以看出, 系统为对象 B 分配
了内存并完成了与对象 A 的复制过程。就类对象而言,相同类型的类对象是通
过拷贝构造函数 来完成整个复制过程的。
下面举例说明拷贝构造函数的工作过程。
#include iostream
using namespace std;
class CExample {
private:
int a;
public:
// 构造函数
CExample(int b)
{ a = b;}
//拷贝构造函数
CExample(const CExample C)
{
a = C.a;
}
// 一般函数
void Show ()
{
coutaendl;
}
};
int main()
{
CExample A(100);
CExample B = A; // CExample B(A); 也是一样的
B.Show ();
return 0;
}
CExample(const CExample C) 就是我们自定义的拷贝构造函数。可见,拷贝构
造函数是一种 特殊的构造函数 ,函数的名称必须和类名称一致, 它必须的一个参
数是本类型的一个 引用变量 。
二 . 拷贝构造函数的调用时机
在 C++中,下面三种对象需要调用拷贝构造函数!
1. 对象以值传递的方式传入函数参数
class CExample
{
private:
int a;
public:
// 构造函数
CExample(int b)
{
a = b;
coutcreat: aendl;
}
//拷贝构造
CExample(const CExample C)
{
a = C.a;
coutcopyendl;
}
//析构函数
~CExample()
{
cout delete: aendl;
}
void Show ()
{
coutaendl;
}
};
//全局函数,传入的是对象
void g_Fun(CExample C)
{
couttestendl;
}
int main()
{
CExample test(1);
//传入对象
g_Fun(test);
return 0;
}
调用 g_Fun() 时,会产生以下几个重要步骤:
(1).test 对象传入形参时,会先会产生一个临时变量,就叫 C 吧。
(2). 然后调用拷贝构
您可能关注的文档
最近下载
- 双曲线的简单几何性质完整版课件.pptx
- TCACM 1563.6-2024 黏膜给药中成药临床应用药物警戒指南.docx VIP
- 《琵琶行》课件(共40张PPT).ppt VIP
- 国土空间规划体系下的市(县)村庄分类与布局规划转型思考——以湖南省常宁市为例.pdf VIP
- TCACM 1563.5-2024 外用中成药临床应用药物警戒指南.pdf VIP
- 21 我把袋子放在桌子上了 (1).ppt VIP
- 银行大堂服务实训(第2版) 课件 项目1 营业前环境准备.pdf VIP
- 财务共享中心现状及评价——以腾讯集团为例.docx VIP
- 智能照明技术课程设计.docx VIP
- 建筑材料性能检测相关标准知识试卷真题及答案.doc VIP
文档评论(0)