基本语言细节--《深度探索C++对象模型》--(2)The Semantics of Constructors--总结点(二)

2014-11-24 02:34:41 · 作者: · 浏览: 3
tructor 的副作用,必须视其执行而定!
6.何时必须使用成员初始化列表---Member Initialization List
(1).初始化一个引用成员时;
(2).初始化一个常量成员时;
(3).当有基类且其构造函数带有一组参数时;
(4).当有成员对象的构造函数带有一组参数时;-----放在成员初始化列表中,可以大大减少编译器为完成初始化,而自动添加的代码(如果放在构造函数内,会有临时对象的产生与销毁,这会有大量的没用的代码而放在列表中,便可以直接调用构造函数)。
故而,最好是将所有的初始化都放在成员初始化列表中。(这是一种良好的
编程风格!)
7.成员初始化列表是如何工作的?
(1).list中的项目的初始化顺序是由成员变量的声明顺序决定的,而不是由成员初始化列表的顺序决定。
(2).成员初始化列表中的项目代码会被编译器安插到 “构造函数用户显式初始化代码”之前!
总结:简略的说,编译器会对initialization list 一一处理并可能重排顺序,以反映出成员变量的声明顺序。它会安插一些代码到构造函数内,并置于任何Explict user code 之前!!!