行业知识
C++的成员初始化列表
2026-11-10 12:47:09
来源:互联网转载
C++���成员构造函数初始化列表:构造函数中初始化类成员的一种方式,当我们编写一个类并向该类添加成员时,通常需要某种方式对这些成员变量进行初始化。
()建议应该在所有地方使用成员初始化列表进行初始化
成员初始化的方法
方法一:
正常使用{}赋值类成员变量
()class Entity{private:string m_Name; // 第一种方法会在这使用一次默认构造函数Entity()int m_Score;Example m_example;public://第一种方法初始化//默认构造函数Entity(){m_Name = "Unknown"; // 第一种方法在构造函数时会调用两次默认构造函数}//构造函数:接受name作为参数的构造函数Entity(const string& name){m_Name = name;}}; 方法二:
使用成员初始化列表方式
形式就是函数名后面加上冒号,对成员变量进行赋值,用括号替换等号
class Entity{private:string m_Name; int m_Score;Example m_example;public: Entity(): m_example(Example(8)) // m_example(8)等价于m_example(Example(8)){//m_example = Example(8);}// 成员初始化列表方式// 注意:不管你怎末写初始化列表,它都会按照定义类成员的顺序进行初始化,因此要确保做成员初始化列表时,要与成员变量声明时的顺序一致Entity(const int score): m_Name("Unknown"),m_Score(score) // 列出想要初始化的成员,等价m_Name = "Unknown";{}Entity(const string& Name,const int& score): m_Name(Name),m_Score(score) // 用括号替换等号,等价m_Name = name;{}const string& GetName() const{return m_Name;}}; 注意:不管你怎末写初始化列表,它都会按照定义类成员的顺序进行初始化,因此要确保做成员初始化列表时,要与成员变量声明时的顺序一致。成员变量声明时按照m_Name,m_Score顺序,使用成员初始化列表时需要同声明顺序一致。
两种方法的差别:
在特定类,两者功能上有区别
第一种方法在构造函数时会调用两次默认构造函数
案例:
# include # include using namespace std;class Example{public:Example(){cout