继承中的构造和析构顺序
我们通过代码的实现来探讨一下子类中的构造和析构顺序:
#include <iostream>
#include <string>
using namespace std;
class A
{
public:
A()
{
cout << "父类的构造函数调用" << endl;
}
~A()
{
cout << "父类析构函数的调用" << endl;
}
};
class B :public A
{
public:
B()
{
cout << "子类的构造函数调用" << endl;
}
~B()
{
cout << "子类析构函数的调用" << endl;
}
};
int main()
{
B p;
}
可以看到先出现父亲,如何理解?
因为儿子要继承于父亲,所以很明显,父亲要先被构造出来吧,然后才能被继承。
那为什么父亲最后释放呢?
因为我们开辟在了栈区,遵循了先进后出的原则,父亲先被创建所以后被释放。