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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingshuiaishui/article/details/85194102

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

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

可见:

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

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

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

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

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

3、调用基类构造函数体

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

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

猜你喜欢

转载自blog.csdn.net/qingshuiaishui/article/details/85194102