当定义一个类时,我们显示地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时的操作。
一个类通过定义五种特殊的成员函数来控制这些操作,我们称这些操作为拷贝控制操作:
- 拷贝构造函数、移动构造函数:定义了当用同类型的另一个对象初始化本对象时做什么
- 拷贝赋值运算符、移动赋值运算符:定义了将一个对象赋予同类型的另一个对象时做什么
- 析构函数:定义了此类型对象销毁时做什么
如果一个类没用定义所有这些拷贝控制成员,编译器会自动为它定义缺失的操作。
在定义任何C++类的时候,拷贝控制操作都是必要的部分。
13.1 拷贝、赋值与销毁
13.1.1 拷贝构造函数
如果一个构造函数的第一个参数自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。
class Foo{
public:
Foo()