构造函数的作用是初始化实例的非静态(static)数据成员,以及在函数体内的一些由程序员指定的工作。
析构函数的作用则与构造函数相反,是将实例所动态申请的资源(在函数体内由程序员控制,如果操作不当,将造成内存泄漏),并销毁实例的非静态(static)数据成员。
构造函数的函数名与类名相同,没有返回值,可以接受参数(因此可以重载,可以有多个构造函数),不能声明为const。
析构函数的函数名是由波浪号(~)接类名构成,没有返回值,且不可以接受参数(因此不可重载,析构函数是唯一的)。
构造函数的工作顺序,先执行非静态数据成员的初始化(数据成员的初始化顺序与其在类中声明的顺序相同),再执行函数体内的工作。
析构函数的工作顺序,先执行函数体内的工作,再按按初始化顺序的逆序对非静态数据成员进行销毁。