基类派生类构造析构函数调用顺序、成员初始化和销毁顺序

#include
#include
#include
/*
构造和初始化顺序:
1、基类的类成员初始化
2、基类构造函数
3、派生类的类成员初始化
4、派生类构造函数

销毁顺序:
1、子类析构函数
2、子类的类成员析构、销毁
3、派生类析构函数
4、派生类的类成员析构、销毁

这两个顺序,可以用入栈、出栈操作来理解~其顺序刚好相反
*/
using namespace std;
class c
{
public:
    c(){cout<<"class c construct"<    ~c(){cout<<"class c destruct"<};
class base
{
public:
    base(){cout<<"base construct"<    ~base(){cout<<"base destruct"<    c obj;
};
class d
{
public:
    d(){cout<<"class d construct"<    ~d(){cout<<"class d destruct"<};
class child: public base
{
public:
    child(){cout<<"child construct"<    ~child(){cout<<"child destruct"<    d obj1;
};

int main()
{
    child obj;
}
执行结果:

class c construct
base construct
class d construct
child construct
child destruct
class d destruct
base destruct
class c destruct

你可能感兴趣的:(c++)