5.0 C++远征:拷贝构造函数
拷贝构造函数
引:当使用默认初始化、等号初始化、小括号初始化等三种初始化方式实例化三个对象时,实际只调用了一份特殊构造函数:拷贝构造函数:
1.拷贝构造函数的定义
拷贝构造函数在名称上与普通构造函数一样,在参数上不一样:要加个const,而且入参是一个引用——而且是一个与自身类的数据类型完全相同的对象。
拷贝构造函数的定义:类名(const 类名 &对象参数名)
这样,在“引”中的以三种初始化方式实例化的三个对象,就会执行自定义拷贝构造函数中的相应代码。
2.总结
(1)
系统自动生成的构造函数分为普通构造函数和拷贝构造函数。当通过初始化"()"或赋值"="来实例化一个对象的时候,调用的是拷贝构造函数。而非普通构造函数——直接Student stu;。
- 如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构造函数
- 当采用直接初始化或复制初始化实例化对象时系统自动调用拷贝构造函数
初始化列表不仅可以写在普通构造函数后,还能写在拷贝构造函数后
(2)
构造函数分为:无参构造函数和有参构造函数。无参构造函数成为默认构造函数。有参构造函数分为有默认值的和无默认值的。如果所有都有默认值,则也为默认构造函数。
拷贝构造函数的参数是确定的,不能重载