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

本文通过C++示例代码展示了类的构造与析构过程中的成员初始化与销毁顺序。具体包括基类与派生类成员变量的构造顺序,以及析构时的逆序销毁过程。通过对一个包含基类和派生类的简单实例分析,帮助读者更好地理解C++中对象生命周期的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值