effective c++条款13学习总结
2011-02-11 09:10
204 查看
条款13: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同
如果成员按它们在初始化列表上出现的顺序被初始化,那w1和w2中的数据成员被创建的顺序就会不同。我们知道,对一个对象的所有成员来说,它们的析构函数被调用的顺序总是和它们在构造函数里被创建的顺序相反。那么,如果允许上面的情况(即,成员按它们在初始化列表上出现的顺序被初始化)发生,编译器就要为每一个对象跟踪其成员初始化的顺序,以保证它们的析构函数以正确的顺序被调用。这会带来昂贵的开销。所以,为了避免这一开销,同一种类型的所有对象在创建(构造)和摧毁(析构)过程中对成员的处理顺序都是相同的,而不管成员在初始化列表中的顺序如何。
只是非静态数据成员的初始化遵守以上规则,另外,基类数据成员总是在派生类数据成员之前被初始化,所以使用继承时,要把基类的初始化列在成员初始化列表的最前面。
如果成员按它们在初始化列表上出现的顺序被初始化,那w1和w2中的数据成员被创建的顺序就会不同。我们知道,对一个对象的所有成员来说,它们的析构函数被调用的顺序总是和它们在构造函数里被创建的顺序相反。那么,如果允许上面的情况(即,成员按它们在初始化列表上出现的顺序被初始化)发生,编译器就要为每一个对象跟踪其成员初始化的顺序,以保证它们的析构函数以正确的顺序被调用。这会带来昂贵的开销。所以,为了避免这一开销,同一种类型的所有对象在创建(构造)和摧毁(析构)过程中对成员的处理顺序都是相同的,而不管成员在初始化列表中的顺序如何。
只是非静态数据成员的初始化遵守以上规则,另外,基类数据成员总是在派生类数据成员之前被初始化,所以使用继承时,要把基类的初始化列在成员初始化列表的最前面。
相关文章推荐
- effective c++条款13学习总结
- effective c++条款13学习总结
- effective c++条款11学习总结
- effective c++条款16学习总结
- effective c++条款14学习总结
- effective c++条款15学习总结
- Effective STL学习笔记-条款13|14
- effective c++条款17学习总结--在operator=中检查给自己赋值的情况
- effective c++条款12学习总结
- Effective c++条款1-2总结
- Effective C++笔记_条款43 学习处理模板化基类内的名称
- More Effective C++(条款13:以by value方式捕捉exceptions)
- Effective C++——》条款13:以对象管理资源
- more effective c++学习笔记 ---- 条款31
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
- 设计模式学习总结(13) 策略模式
- 学习总结-Thinking In Java Chapter 13 strings
- More Effective C++学习笔记-条款1|2|3|4
- VERYIMPORTANT我的python学习之路-13知识总结