- 0
- 0
- 约2.87千字
- 约 11页
- 2017-07-15 发布于浙江
- 举报
01_复制构造函数
信息科学技术学院
程序设计实习
郭炜 微博 /guoweiofpku
/u/3266490431
刘家瑛 微博 /pkuliujiaying
1
信息科学技术学院 《程序设计实习》 郭炜 刘家瑛
复制构造函数
(copy constructor)
2
基本概念(教材P183)
只有一个参数,即对同类对象的引用。
形如 X::X( X )或X::X(const X ), 二者选一
后者能以常量对象作为参数
如果没有定义复制构造函数,那么编译器生成默认
复制构造函数。默认的复制构造函数完成复制功能。
3
基本概念
class Complex {
private :
double real,imag;
};
Complex c1; //调用缺省无参构造函数
Complex c2(c1);//调用缺省的复制构造函数,将c2 初始化成和c1一样
4
基本概念
如果定义的自己的复制构造函数,
则默认的复制构造函数不存在。
class Complex {
public :
double real,imag;
Complex(){ }
Complex( const Complex c ) {
real = c.real;
imag = c.imag;
cout “Copy Constructor called”;
}
};
Complex c1;
Complex c2(c1);//调用自己定义的复制构造函数,输出Copy Constructor called 5
基本概念
不允许有形如 X::X( X )的构造函数。
class CSample {
CSample( CSample c ) {
} //错,不允许这样的构造函数
};
6
复制构造函数起作用的三种情况
1)当用一个对象去初始化同类的另一个对象时。
Complex c2(c1);
Complex c2 = c1; //初始化语句,非赋值语句
7
复制构造函数起作用的三种情况
2)如果某函数有一个参数是类A 的对象,
那么该函数被调用时,类A 的复制构造函数将被调用。
class A
{
public:
A() { };
A( A a) {
cout Copy constructor called endl;
}
};
8
复制构造函数起作用的三种情况
2)如果某函数有一个参数是类A 的对象,
那么该函数被调用时,类A 的复制构造函数将被调用。
void Func(A a1){
您可能关注的文档
最近下载
- 建筑工程图集 新12J06楼梯.pdf VIP
- 新高考数学二轮复习导数培优专题14 利用导数研究函数零点问题(含解析).doc VIP
- 新高考数学一轮复习考点过关练习 利用导数解决函数单调性的应用问题(含解析).doc VIP
- 驯养篮球犬(最新整理版).docx VIP
- 巴黎铁塔埃菲尔竹签DIY制作全过程.docx VIP
- NB 35074-2015 水电工程劳动安全与工业卫生设计规范.docx VIP
- 通用欠条模板(个人现金借款版).pdf
- 2025年中考数学真题《因式分解》专项汇编含答案.pdf VIP
- APS-737-23-001B737NG更换ISFD.docx VIP
- 人工流产护理试题及答案.docx VIP
原创力文档

文档评论(0)