Effective C++——在使用前初始化对象

对象的赋值与初始化

class A{
private:
    int data;
    string name;
public:
    A(int i, string s){ data = i; name = s;}//这只是赋值,并不是初始化
    A(int i, string s) : data(i), name(s){}//这是初始化
};

        在构造函数中为每个成员变量赋值的方式,并不是对象的初始化过程,成员变量的初始化在比调用构造函数更早之前进行。而初始值列表的方式才是对对象的初始化。

        如果,A中的成员变量有其他类的对象,那么在第一种方式中,会调用其默认构造函数后,再对其进行赋值。而初始值列表的方式,直接由A的实参拿来调用其成员变量对象的复制构造函数。这会提高效率,但是如果成员变量都是内置类型,效率不会提高太多。

初始化顺序

Effective C++——在使用前初始化对象_第1张图片

        成员变量的初始化顺序与初始值列表中的顺序无关,与声明中的顺序有关。永远按声明次序进行初始化。

你可能感兴趣的:(Effective,C++,c++,开发语言)