初始化列表
class Date
{
public:
//Date(int year, int month, int day)//构造函数
//{
// _year = year;
// _month = month;
// _day = day;
//}
Date(int year, int month, int day)//初始化列表
:_year(year),
_month(month),
_day(day)
{}
private:
int _year;
int _month;
int _day;
};
在如上代码中,构造函数只是对数据进行了赋初值,不能称之为初始化,初始化只能一次赋值,而构造函数体内可以多次赋值
注意:1、初始化列表只能使用一次
2、const成员变量、引用成员变量、自定义类型(并且没有默认构造函数)必须在初始化列表初始化
在构造函数中是用赋值语句对成员变量进行赋值,但是const修饰的成员变量就是不可修改的常量,这时就只能使用初始化列表
初始化列表中的初始化顺序是成员声明的顺序,与初始化列表中的顺序无关
如上图中a为1时,a1先初始化,然后再初始化a2,所以结果a1是随机值,a2是1