派生类的构造函数与析构函数的调用顺序
前面已经提到,构造函数和析构函数的调用顺序是先构造的后析构,后构造的先析构。
那么基类和派生类中的构造函数和析构函数的调用顺序是否也是如此呢?
构造函数的调用顺序规则如下所述。
1 )基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现
的顺序,而不是它们在成员初始化表中的顺序。
2 )成员类对象构造函数。如果有多个成员类对象,则构造函数的调用顺序是对象在类
中被声明的顺序,而不是它们出现在成员初始化表中的顺序。
3 )派生类构造函数。
而析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3 点内容中的顺序反过
来用就可以了,即:首先调用派生类的析构函数; 其次再调用成员类对象的析构函数;最后
调用基类的析构函数。析构函数在下面3 种情况时被调用。
1 )对象生命周期结束被销毁时(一般类成员的指针变量与引用都不自动调用析构函数) 。
2) delete 指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是
虚函数时。
3 )对象i 是对象o的成员,o的析构函数被调用时,对象i 的析构函数也被调用。