0、前言
在我学了初始化列表的时候,作为笔记写了一篇文章,觉得挺简单的,然后又看了看别人的关于初始化列表的文章,原来里面还有效率、函数执行顺序等等细节。
写一个类A,一个类B(A作为成员属性),然后实例化,之前以为自己懂了,其实只是大概,今天就探究下到底每一步发生了啥。
1、代码
代码缩进删了,比较紧凑,好说清楚一些。
1、以有参构造的方式实例化类A的对象a,然后换行;
2、这一步是B的有参构造函数,因为有参数,所以将实参a传给形参aa的时候呢,调用了类A的拷贝构造函数;
3、传入参数后并不是就开始执行B有参构造函数体的内容,还有一步初始化成员变量的操作,所以会调用类A和类C的默认构造,即使类C并没有被用到,在这一步的时候也被初始化了;
4、最后,形参aa赋值给成员属性a,调用了A赋值运算符;打印了下B有参构造,执行完毕;