构造函数初始化列表用于高效初始化成员变量,尤其适用于const、引用及无默认构造函数的类类型成员。语法为在构造函数参数后以冒号引出,按成员声明顺序执行初始化,推荐普遍使用以提升性能并避免赋值开销。

在C++中,构造函数的初始化列表是一种在对象创建时直接初始化成员变量的方式,相比在构造函数体内赋值更高效,尤其对类类型成员、const成员和引用成员是必需的。
初始化列表语法
初始化列表位于构造函数参数列表之后,以冒号开头,后跟一系列成员变量及其初始值,多个成员之间用逗号分隔。
ClassName::ClassName(参数) : 成员1(值1), 成员2(值2), ... {
// 构造函数体
}
必须使用初始化列表的情况
以下类型的成员只能通过初始化列表初始化:
- const成员变量:一旦定义不能修改,只能初始化
- 引用成员变量:引用必须绑定到一个对象,不能默认构造后再赋值
- 没有默认构造函数的类类型成员:必须显式提供参数来构造
示例:
立即学习“C++免费学习笔记(深入)”;
class MyClass {
private:
const int id;
int& ref;
OtherClass obj;
public:
MyClass(int i, int& r) : id(i), ref(r), obj(42) {}
};
推荐使用初始化列表的原因
即使对于基本类型或可默认构造的类成员,也建议使用初始化列表:
- 避免先调用默认构造再赋值,提升性能
- 统一初始化方式,代码更清晰
- 对于复杂对象,减少不必要的临时对象开销
例如:
class Person {
std::string name;
int age;
public:
Person(const std::string& n, int a) : name(n), age(a) {}
};










