析构函数、拷贝构造函数
析构函数:
1.~ 类名()
2.无参数,无返回值;不可重载
3.若无显示定义析构函数,系统会自动生成默认析构函数
4.对象生命周期结束时,C++编译系统自动调用析构函数
5.作用:默认的析构函数对自定义类型成员调用它的析构函数
析构函数完成类的一些资源清理工作,而不是完成对象的销毁
拷贝构造函数:
1.是构造函数的重载
2.参数只有一个且必须是引用传参(传值会引发无穷递归调用),这是语法要求。
为什么必须引用传参:
调用拷贝构造函数的场景:
①一个对象实例化另一个对象;
②函数的参数类型为类类型,给该函数传参时;
③返回值类型为类类型。
若拷贝构造函数的参数类型为类类型,调用拷贝构造函数传参时会产生给临时对象赋值,给临时对象赋值又会调用拷贝构造函数;调用拷贝构造函数传参时会产生给临时对象赋值,给临时对象赋值又会调用拷贝构造函数…循环,引起无穷递归
若拷贝构造函数的参数类型为类的引用类型,调用拷贝构造函数传参时不会产生给临时对象赋值(即传参时不会调用拷贝构造函数),不会引起递归
3.若未进行显示定义,系统会自动生成默认的拷贝构造函数,并按成员顺序拷贝