我们知道单一的继承或者复合关系的构造函数作用是从内到外,而析构是从外到内的。
那么同时拥有继承和复合关系的时候,构造函数与析构函数的作用顺序是怎么样呢,下面有事例代码来总结。
class Base
{
public:
Base() { cout << "Base 的 构造函数" << endl; }
~Base() { cout << "Base 的 析构函数" << endl; }
};
class Component
{
public:
Component() { cout << " Component 的构造函数" << endl; }
~Component() { cout << " Component 的析构函数" << endl; }
};
class Derived : public Base
{
public :
Derived() { cout << "Derived 的构造函数" << endl; }
~Derived() { cout << "Derived 的析构函数" << endl; }
Component c;
};
由程序运行的结果来看,我们可以总结到:先执行父类构造函数,再执行复合类的构造函数,最后执行本类的构造函数。而析构次序反之。