构造函数无返回值类型且不可设置返回值类型。
析构函数无返回值类型且不可设置返回值类型且无参数。
当本地变量对象所在作用域结束时,本地变量会调用对象的析构函数析构该对象。
如果类没有自定义的构造函数,系统会生成一个无参的空构造函数。
如果类有自定义的构造函数,系统不会生成构造函数。
类中只能有一个析构函数。
析构函数不可以被重载,因为析构函数只能有一个,且不能带参数。
如果你只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个拷贝默认构造函数、一个默认拷贝赋值操作符和一个默认析构函数。这些函数只有在第一次被调用时,才会别编译器创建。所有这些函数都是inline和public的。
虚析构函数:在删除指向子类对象的基类指针时可以调用子类的析构函数而非父类的析构函数以达到释放子类中堆内存的目的,从而防止内存泄露。
类的构造函数一般是共有的(public),但有时也把构造函数声明为私有的(private),其作用是限制其创建该类对象的范围,这时,只能在本类和友元中创建该类对象。
先创建的变量先构造。先构造的后析构。因为局部变量存储于栈中,先进后出。
C++ 初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序,也就是说初始化列表的顺序没有意义。所以如果在initialization list中,某个成员变量a的参数(初值)为其他成员变量b,如果变量b的声明位于a之前,那么b将会先进行初始化,如果b已经初始化完毕,那么a可以顺利使用b 的值进行初始化,如果变量a的声明在b之前,那么将会先对a进行初始化,而此时b还未进行初始化,b的值是一个不确定的值,a将会使用这个不确定的值进行初始化。