第十三章 复制控制
1. 复制构造函数具有单个形参,该形参(常用const修饰)是对该类类型的引用,当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数,当将该类型的对象传递给函数或从函数返回该类型的对象时,将隐式使用复制构造函数;
2. 不管类是否定义了自己的析构函数,编译器都自动执行类中非static数据成员的析构函数;
3. 不能对IO类型的对象使用复制初始化;
4. 当形参或返回值为类类型时,由复制构造函数进行赋值;
5. 即使定义了其他构造函数,也会合成赋值构造函数,合成复制构造函数的行为时,执行逐个成员初始化,将新对象初始化为原对象的副本;
6. 只包含类类型成员或内置类型(但不是指针类型)成员的类,无须显式地定义复制构造函数,也可以复制;
7. 为了防止赋值,类必须显式声明其复制构造函数为private,然而,类的友元和成员仍可进行赋值,如果想要连友元和成员中的复制也禁止,就可以声明一个private复制构造函数但不对其定义;
8. 一般来说,最好显式或隐式定义默认构造函数和复制构造函数。只有不存在其他构造函数时才合成默认构造函数。如果定义了复制构造函数,也必须定义默认构造函数;
9. 如果类需要析构函数,则它也需要赋值操作符和复制构造函数;
10. 析构函数没有返回值,没有形参,也不能进行重载;
11. 编写自己的复制构造函数时,必须显式复制需要复制的任意成员。显式定义的复制构造函数不会进行任何自动复制;
【C++ rimer 学习笔记】ch13 复制控制
最新推荐文章于 2023-11-20 20:23:33 发布
本文详细介绍了C++中的复制构造函数的概念、作用及使用方法,包括如何使用复制构造函数进行对象复制、析构函数的自动执行、复制构造函数的定义与省略情况、以及如何防止对象复制。
7136

被折叠的 条评论
为什么被折叠?



