标签:
1. 特殊的构造函数
|
无参构造函数 |
拷贝构造函数 |
参数形式 |
没有参数的构造函数 |
参数为const class_name&的构造函数 |
默认情况 |
当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空 |
当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变量的值复制 |
【编程实验】特殊的构造函数
2. 拷贝构造函数
(1)拷贝构造函数的意义
①兼容C语言的初始化方式,即利用己经存在的对象去创建新的对象。(因为C++中初始化会涉及到拷贝构造函数的调用。注意初始化与赋值是不同的,赋值时“=”运算符会被调用)
如:int a = b; //C中,用一个变量来初始化另一个变量;
Student s2 = s1;//利用己经存在的s1对象来初始化,很像C的初始化方式
②初始化行为能够符合预期的逻辑
(2)浅拷贝和深拷贝
①拷贝后对象的物理状态相同→编译器提供的拷贝构造函数只进行浅拷贝
②拷贝后对象的逻辑状态相同
【编程实验】对象的初始化
(3)什么时候需要进行深拷贝
①对象中有成员指代了系统中的资源
②如成员指向了动态内存空间、打开了外存中的文件或使用了系统中的网络端口等
③自定义拷贝构造函数时,必然需要实现深拷贝
【编程实验】数组类的改进
3. 小结
(1)C++编译器会默认提供构造函数
(2)无参构造函数用于定义对象的默认初始状态
(3)拷贝构造函数在创建对象时拷贝对象的状态
(4)对象的拷贝有浅拷贝和深拷贝两种方式
标签:
原文地址:http://www.cnblogs.com/5iedu/p/5390766.html