1.为防止有的情况下对象未初始化导致的混乱,最佳的处理办法就是:永远在使用对象之前先将它初始化。对于无任何成员的内置类型,必须手工完成
2.内置类型以外的任何其他东西,初始化责任在构造函数中。规则很简单:确保每一个构造函数都将对象的每一个成员初始化
3.C++规定,对象的成员变量的初始化动作发生在进入构造函数本体之前。在构造函数中就是给成员变量赋值,而不是初始化
4.可以用成员初始化列表对成员变量进行初始化,但因为类成员变量有时候非常多,所以这只是理想情况
5.初始化时是调用变量的构造函数传递值,赋值是调用 = 操作符传递值
6.可以立下一个规则:总是在初值列中列出所有成员变量,以免要记住哪些成员变量不需要初始化,同时可以保证有const和引用变量时正常初始化
7.初始化的顺序最好和变量声明的顺序相同,防止初始化有先后要求的时候不一致
8.编译单元指产出单一目标文件的源码,基本上是单一源码加上包含的头文件
9.C++对定义于不同编译单元的non-local static对象的初始化没有固定顺序,如果要确定顺序,可以将non-local static放到函数内。这些函数返回对象的引用,然后用户调用函数,而不直接干涉对象,这是单例的常用实现方法之一
记住三点:
1.为内置型对象进行手工初始化,因为C++不保证初始化它们
2.构造函数最好使用成员初值列,而不要在构造函数内使用赋值操作。初值列的成员变量,应该和class中的声明次序相同
3.为免除“跨编译单元之初始化次序”问题,用local static对象替换non-local static对象
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)