初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。
下面我来展示有无初始化列表区别
普通方法
class Date
{
public:
Date(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
初始化列表方法
class Date
{
public:
Date(int year, int month, int day)
: _year(year), _month(month), _day(day)
{
;
}
private:
int _year;
int _month;
int _day;
};
那有些同学就要有疑问了,这不是吃饱了没事找事吗?
这样写既麻烦也没有第一种简洁明了为什么还要用
不急,我们再来看这样一组代码对比:
注意:这里我又给 _year 赋值了一遍,所以编译器给我报错了
初始化列表能防止重定义
【注意】
1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
2. 类中包含以下成员,必须放在初始化列表位置进行初始化:
引用成员变量
const成员变量
自定义类型成员(且该类没有默认构造函数时)