自学内容网 自学内容网

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的实参拿来调用其成员变量对象的复制构造函数。这会提高效率,但是如果成员变量都是内置类型,效率不会提高太多。

初始化顺序

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


原文地址:https://blog.csdn.net/A11en3/article/details/135700336

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!