C++构造函数初始化列表的执行分析

探讨了C++中构造函数初始化列表对于不同类型的变量的影响。对于基本类型变量,初始化列表不会显著提升效率;但对于类对象成员,使用初始化列表可以避免多次调用构造函数,从而提高初始化效率。

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

C++构造函数初始化列表对于一般变量(int,long,float,double,bool等)不管是否用初始化列表,生成的汇编代码基本一致,不会有执行效率的提升。

对于类变量,则使用初始化列表调用适当的类构造函数,确实可以提高代码初始化效率。因为不是在初始化列表列表中,编译器会生成调用默认的类构造函数,而在构造函数体内的初始化又会再次调用,由此产生的无效调用。

可见:

使用初始化列表,不一定会提高代码执行效率;对于成员是类对象的成员使用初始化列表操作确实可以提高执行效率。

从汇编代码看一般栈对象的生成过程为:

1、预留对象栈空间:sub esp,sizeof(CLASS)

2、依次调用对象类初始化列表中的基类构造

3、调用基类构造函数的初始化列表

3、调用基类构造函数体

4、调用对象类初始化列表的构造函数初始化列表中的非类构造

5、调用对象类的构造函数体

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值