四个函数都是C++类中的隐藏函数,析构是类结束时所调用,在一个类的创建销毁过程中***最多***执行一次(也有可能不执行,主函数的结束会导致类占用的空间直接被释放)。
析构函数
~类名(void)
{
}
析构函数
析构函数没有返回值也不需要参数,因此析构函数也不可以重载
与构造函数正好相反
先释放自身的资源
再调用成员的析构函数
最后调用父类的析构函数
如果一个类没实现析构函数,编译器会自动生成一个具有析构函数功能的二进制指令,这就是缺省析构。它负责释放编译器能够看得到的资源(成员变量、类成员、父类成员)
注意:缺省析构无法释放动态资源(堆内存)
如果一个类没有动态资源,也不需要做善后工作,缺省析构就完全够用了
构造函数
类名()
{
}
1、构造函数可以被重载(函数的多个版本)
、缺省构造,编译器自动生成的一个什么都不做的构造函数(唯一的作用就是避免编译错误)。
注意:当类中实现一个有参造时,缺省构造就不会再自动生成,如果有需要,必须显式地写出来。
3、无参构造未必无参,当给有参构造的所有参数设置默认形参,调用这种构造函数就不需要传参。
注意:所谓的"编译器生成的某某函数"其实不是真正语法意义上的函数,而是功能意义的函数,编译器作为可执行指令的生成者,它会直接生成具有某项功能的二进制指令,不需要借助高级语言语义上的函数完成此任务。
注意:如果一个类A是其他类B成员变量,那么一定要保证它有一个无参构造函数,当B的构造函数执行时会先执行成员变量的无参构造,而