标签:
条款4:确定对象被使用前已经初始化
一、
变量在不同情况下可能会初始化,也可能不会初始化。
注意初始化和赋值的区别。
1、在类中内置类型不会发生隐式初始化,自定义有默认构造函数的能被默认初始化
所以在构造类时务必初始化内置类型,最好给自定义的对象显示初始化避免在函数体中赋值浪费资源。
2、内置类型在函数体内不会初始化,在函数体外自动初始化为0。
二、
1、const和引用类型必须初始化,不可能赋值
三
1、当类实在是有较多构造函数,并且总是要对一些成员数据重复初始化,可以考虑将那些“赋值和初始化一样好的”数据的赋值放入一个往往是私有的工具函数中。
四、
1、c++有着严格的初始化顺序,将成员初始化顺序和类中声明的顺序一致是个好习惯,否则可能会出现晦涩错误
五、
c++保证函数内的static对象会在首次被调用时初始化,用这个代替一个在其他文件的no_local-static对象就保证了初始化的顺序.
1、多编译文件中,一个文件中的A类对象的初始化依赖于另一个文件中一个B类的对象的数据的话,初始化顺序就是一个问题,因为编译器无法确定哪个文件中的类的对象能先被初始化,可是一个A类对象的初始化却依赖于另外一个B类对象的痴树花。
解决方案:
将A类中为B类定义准备的一个实例化对象extern A x 变化成一个内嵌有定义一个static A x的返回&函数,通过这个函数来初始化B类,这样保证了类间对象初始化的顺序。
标签:
原文地址:http://www.cnblogs.com/7-29/p/5720597.html