EC笔记,第一部分:4.确定对象初始化

04.确定对象初始化

将对象初始化,C++反复无常,所以在使用前应该手动初始化

1.分清赋值与初始化

            以下例子:

class test{

    public:

    int a;

    test(){

       a=0;//赋值而非初始化

    }

};

 

class test2{

    public:

    int a;

    test():a(0){//初始化

 

    }

};

            第二种比第一种高效,有时甚至高效很多,第一种会调用default构造函数,然后赋值,这样defalit的调用就完全浪费了,而第二种避免了对default的调用

            注意,初始化列表中应该列出所有成员变量

            初始化是以声明次序初始化的

2.关于非局部静态变量的初始化

            非局部静态变量往往出现在多个实现文件中,而他们的初始化顺序无法确定(导致的问题:一个非局部静态变量的初始化用了另一个非局部静态变量,而被使用的非局部静态变量未被初始化),最好的办法是定义一个包含局部静态变量的函数,函数返回该变量的引用,以此来避免在对象使用前未被初始化

 

 

 

 

 

原文地址:https://www.cnblogs.com/SkyFireITDIY/p/4374945.html