本类、父类以及本类中数据成员(也是用户自定义类)的构造及析构函数的调用顺序
对于本类、父类以及本类中数据成员(也是用户自定义类),在定义一个本类的对象时,程序是先调用父类的构造函数,再调用数据成员的构造函数,最后再调用本类的构造函数;析构函数调用顺序是,先本类析构函数,再数据
成员的析构函数,最后父类的析构函数。
以如下程序为例:
#include <iostream>
#include <string>
using namespace std;
class A
{
public:
A() { cout << "A::A()" << endl; }
~A() { cout << "A::~A()" << endl; }
};
class B
{
public:
B() { cout << "B::B()" << endl; }
~B() { cout << "B::~B()" << endl; }
};
class C : public B
{
A a;
public:
C() { cout << "C::C()" << endl; }
~C() { cout << "C::~C()" << endl; }
};
int main()
{
C c;
return 0;
}
在我的机器上,上述程序的输出结果是:
B::B()
A::A()
C::C()
C::~C()
A::~A()
B::~B()