C++构造函数和析构函数的具体执行算法

本文详细探讨了C++中构造函数和析构函数的执行算法。在构造过程中,首先调用虚基类及上层基类构造函数,接着初始化vptr,再进行成员初始化,最后执行用户提供的代码。对于被扩展的类,成员初始化按声明顺序进行,未明确初始化的成员使用默认构造函数。而在析构阶段,先执行析构函数体,然后逆序调用成员类的析构函数,如果有vptr则重置,最后按声明顺序调用非虚基类和虚基类的析构函数。
摘要由CSDN通过智能技术生成

构造函数:

  1. 在派⽣类构造函数中,所有的虚基类及上⼀层基类的构造函数调⽤;
  2. 对象的 vptr 被初始化;
  3. 如果有成员初始化列表,将在构造函数体内扩展开来,这必须在 vptr 被设定之后才做;
  4. 执⾏程序员所提供的代码;

而当被扩展的类的构造函数:

  1. 记录在成员初始化列表中的数据成员初始化操作会被放在构造函数的函数体内,并与成员的声明顺序为顺序;
  2. 如果⼀个成员并没有出现在成员初始化列表中,但它有⼀个默认构造函数,那么默认构造函数必须被调⽤;
  3. 如果 class 有虚表,那么它必须被设定初值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是纠结伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值