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

发布时间:2024年01月19日

对象的赋值与初始化

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。