前言:为什么会出现初始化列表这个功能?
在学习初始化列表之前,我们通常在构造函数中为函数赋初值,但这行为并不能称为初始化。因为初始化具有唯一性,只能初始化一次,而构造函数体内可以多次赋值。因此我们引入初始化列表对类进行初始化。
初始化列表的定义
初始化列表:以一个 冒号开始 ,接着是一个以 逗号分隔的数据成员列表 ,每个 " 成员变量 " 后面跟
一个 放在括号中的初始值或表达式。
class Date
{
public:
Date(int year, int month, int day): _year(year), _month(month), _day(day)
{}
private:
int _year;
int _month;
int _day;
};
使用规则
1. 每个成员变量在初始化列表中 只能出现一次 ( 初始化只能初始化一次 )
2. 类中包含以下成员,必须放在初始化列表位置进行初始化:
引用成员变量
const 成员变量
自定义类型成员 ( 且该类没有默认构造函数时 )
3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,
一定会先使用初始化列表初始化。
4. 成员变量 在类中 声明次序 就是其在初始化列表中的 初始化顺序 ,与其在初始化列表中的先后
次序无关