C++析构函数调用顺序
创始人
2025-06-01 04:47:06
0

文章目录


析构函数工作过程:

1、执行析构函数的函数体;

2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员;

3、按原来构造顺序的相反顶序向上依次调用基类的析构函数。

程序示例:

#include
using namespace std;
class AA{
char c;
public:AA(char ch):c(ch){ cout< cout<<"a"; }
};
class BB{AA m1;AA m2;
public:BB():m2('p'),m1('q'){ cout<<"B";}~BB(){ cout<< "b"; }
};int main(){
BB bb;
return O;}

在这里插入图片描述

【解析】

  1. 构造函数初始化列表仅指定用于初始化成员的值,不指定这些初始化执行的次序,成员初始化的次序是类定义中声明成员的次序,成员初始化完成后执行构造函数的函数体;所以程序中在创建BB对象时,首先初始化m1,再初始化m2。
  2. 由于m1、 m2都是AA对象,且有实参q、p,所以调用构造函数AA(cha ch),用ch初始化成员c后输出成员c的值,即输出 ‘q’ 、‘p’ ,再执行类B的函数体,输出 ‘B’; 程序执行结束时,系统会自动调用类的析构函数清理自己的成员。
  3. 析构函数工作过程:1、执行析构函数的函数体; 2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员; 3、按原来构造顺序的相反顶序向上依次调用基类的析构函数。所以程序运行结束时,首先调用B的析构函数并执行函数体,输出“b”﹔然后调用m2的析构函数,销毁m2成员,输出 ‘a’,再调用m1的析构函数,销毁m1成员,输出 ‘a’ ; 综上所述,程序运行的输出是:“qpBbaa”; 答案为D。

示例二:
有如下类声明:

class Base1{ };
class Base2{ };
class Derived: public Base2,public Base1{};

在一个Derived 对象消亡时,析构函数被调用的顺序是()。
在这里插入图片描述
【解析】
C++中,派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员 ,另外对于多继承, 派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的; 而析构函数是按构造函数运行顺序的逆序进行调用的 ,可知题目中析构函数的调用顺序为: 派生类Derived的析构函数,Base1的析构函数,Base2的析构函数; 答案为A。

相关内容

热门资讯

民生调查|一券在手,买遍全城!... 新民晚报记者 陈梦泽(下同) 2025年的上海消费市场,藏着一张超给力的“快乐入场券”。 年初,贯穿...
六类家电四类数码智能产品202... 商务部、国家发展改革委、财政部、市场监管总局、国家邮政局办公厅(室)于12月31日联合印发《关于做好...
原创 美... 谁能想到,尽管美国大声疾呼反恐禁毒,却依然紧盯委内瑞拉的石油出口。尽管美国采取了严厉的封锁措施,马拉...
两部门:各地区要及时完成202... 来源:证券时报e公司 人民财讯12月30日电,国家发展改革委、财政部发布关于2026年实施大规模设备...
确定了!i茅台App将上线14... 12月30日下午,有媒体报道,自2026年1月开始,贵州茅台(600519)将在旗下官方数字销售平台...
原创 美... 在阅读文章前,辛苦您点下“关注”,方便讨论和分享。作者定会不负众望,按时按量创作出更优质的内容 文...
单程12美元 马斯克“无聊公司... 快科技12月31日消息,近日,马斯克旗下隧道公司The Boring Company(无聊公司)正式...
罗永浩致歉 今晚,罗永浩2025年度科技创新分享大会在上海举行。但直播开始44分钟,罗永浩才出现在现场。随后发布...
和讯投顾陈满堂:三次冲高回落,... 大盘连续三天出现冲高回落,收盘都在3970以内。和讯投顾陈满堂分析,明后天大盘的结构走势以及板块机会...
年内第49次新高,连续13日吸... 岁末年初,A股市场持续回暖,“质量红利”策略成为资金布局焦点。截至12月31日上午10时24分,中证...
大模型第一股智谱启动招股 近年... 深圳商报·读创客户端记者 邱清月 作为国内首家冲刺“大模型第一股”的企业,北京智谱华章科技股份有限公...
紫光国微并购标的瞄准瑞能半导体... 本报记者 张晓玉 12月30日,紫光国芯微电子股份有限公司(以下简称“紫光国微”)发布公告称,因筹划...
河南省城乡综合投资公司拟发行2... 【大河财立方消息】12月31日消息,河南省城乡综合投资有限公司2026年面向专业投资者非公开发行中小...
出大招了!生娃,直接送房子 *此图由AI生成 作者| 史大郎&猫哥 来源| 是史大郎&大猫财经Pro 生孩子,直接送房子。 有...
美股三大指数小幅收跌,白银上演... 当地时间12月30日,美股三大指数小幅收跌,而贵金属市场再度掀起波澜,现货白银价格大幅上涨超过5%,...
知名国产女鞋KISSCAT母公... 蓝鲸新闻12月30日(记者汤诗韵)国货女鞋Kisscat母公司天创时尚近日易主。该公司日前公告,已通...
邮储银行:吸收合并邮惠万家银行... 中国网财经12月31日讯 昨日,邮储银行发布公告称,该行于2025年10月9日召开的临时股东大会审议...
雷军爽约道歉:感冒有点严重!原... 12月31日,小米创办人、董事长兼CEO雷军发文:实在抱歉,我感冒有点严重,原定跨年的直播只能推迟到...
江特电机亏损超千万 碳酸锂期货... 来源:第一财经 “开盘做多,先收割一把,”李文近日几乎天天在一个锂业微信群中分享他做多碳酸锂期货的...
存储巨头长鑫IPO在即!设备国... 2025年最后一个交易日,长鑫IPO进展引爆市场关注,半导体产业链多股拉升。上游半导体设备ETF(5...