什么是构造函数
结构体、共用体、枚举也类似。
构造函数的定义
类类型:类里面的类对象,如果自身没有默认构造函数,需要在类中一并说明。
(3)初始化式可以是任意的形式(花括号中的表达式)。
构造函数的重载
定义默认构造函数
两种默认构造函数形式:
- 形式参数均是默认参数;
- 不带参数。
隐式类类型的转换
转换构造函数。
第14行进行了类型转换。
指定数据类型的引用。
一般不采用这样的隐式构造函数。
复制构造函数
构造函数只是初始化对象,没必要改变对象的值,因此用const更好。
合成复制构造函数
直接初始化应该也会调用自身定义的复制构造函数。
深复制与浅复制
浅复制指的是简单的将值进行拷贝。
深复制指的是将值和资源一起复制。
系统自动生成的复制构造函数都是浅复制。自己定义构造函数的目的是为了实现深复制。
注意第15行。
析构函数撤销存储空间。如果指向同一个数组,那么需要执行两次指针撤销,不符合常理。