

构造函数初始化列表
之前的构造函数还有一点点细节没说,今天再对它进行补充。
- 构造函数初始化还有一种方式,就是初始化列表。初始化列表以一个冒号开始,然后是一个个逗号进行分隔的数据成员列表,每个成员变量后跟一个括号中的初始值或者表达式。如
_day(5),初始化天数为 5。 - 每个成员变量在初始化列表中只能出现一次,也就是唯一性。初始化列表是所有成员变量定义初始化的地方。
- 有三类成员变量(引用、const、无默认构造)必须放在初始化列表进行初始化。
- C++11 支持成员变量在声明的时候给初始值,这个初始值主要是给没在初始化列表的成员变量使用的。
- 简单来说,能用初始化列表就用初始化列表进行初始化工作。
- 初始化列表按照成员变量在类中声明的顺序进行初始化,跟初始化列表顺序无关。
总结:所有构造函数都有初始化列表。所有成员变量都要走初始化列表进行初始化。

#include <iostream>
using namespace std;
class D1 {
public:
D1(int year = 1, int month = 1, int day = 1) :_year(year), _month(month), _day(day) { }
void print() const { cout << _year << " " << _month << " " << _day << endl; }
private:
int _year;
int _day;
_month;
};
{
D1 a;
a.();
;
}




