Effective C++条款13: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同

本条款解决了我的一个疑问,为什么成员初始化顺序和声明的顺序相同,而和初始化列表中的顺序没关系呢?

“我们知道,对一个对象的所有成员来说,它们的析构函数被调用的顺序总是和它们在构造函数里被创建的顺序相反。那么,如果允许上面的情况(即,成员按它们在初始化列表上出现的顺序被初始化)发生,编译器就要为每一个对象跟踪其成员初始化的顺序,以保证它们的析构函数以正确的顺序被调用。这会带来昂贵的开销。所以,为了避免这一开销,同一种类型的所有对象在创建(构造)和摧毁(析构)过程中对成员的处理顺序都是相同的,而不管成员在初始化列表中的顺序如何。”

原文地址:https://www.cnblogs.com/helloweworld/p/3121462.html