问题1:何时必须使用成员初始化列表?有以下几种情况
1.如果这个成员是个引用。2.如果这个成员是个const类型成员。3.如果这个类是继承一个基类,并且基类中有构造函数,这个构造函数里边还有参数。4.如果成员变量类型是个某个类类型,而这个类的构造函数带参数。
问题2:使用初始化列表的优势
1.除了必须用初始化列表的场合,初始化列表肯定有其他目的的。就是提高程序的运行效率。尤其是对于类类型成员变量放到初始化列表中能够比较明显的看到效率的提升。对于简单的基础类型的成员变量,比如,int m_test,放在初始化列表或者放在函数体里效率差别不大。提醒:写程序的时候,成员变量尽量放在初始化列表里。
问题3:初始化列表细节探究
1.初始化列表中的代码可以看作是被编译器安插到构造函数中的,只是这些代码有些特殊,这些代码是在任何用户自己的构造函数体之前被执行的。即,初始化列表是先于构造函数体之前进行执行的。
2.这些列表中的变量的初始化顺序是定义顺序,而不是在初始化列表中的顺序。不建议在初始化列表中进行两个两个都在初始化列表中出现的成员之间的初始化。