初始化列表是C++中用於初始化類的成員變量的一種機制,它位於構造函數的定義中。初始化列表是構造函數真正進行初始化的地方,無論是否編寫了構造函數或顯示地寫了初始化列表,構造函數都會通過初始化列表進行對象的初始化。初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段,每個字段對應類的一箇成員變量,並指定用於初始化的值或表達式。
初始化列表與構造函數體內的賦值操作不同,因爲:
初始化列表在定義階段進行初始化,而構造函數體內的賦值操作在定義階段之後進行。
只能在定義階段進行的初始化類型(如引用對象和無默認構造函數的自定義類型)只能在初始化列表中進行初始化。
初始化順序不是跟着初始化列表走的,而是跟着類中成員變量的聲明順序進行的初始化。
例如,對於Date類:
```cpp
class Date {
private:
int _year;
int _month;
int _day;
};
Date::Date(int year, int month, int day) : _year(year), _month(month), _day(day)
```
這裏的冒號後面的部分就是初始化列表,它指定了成員變量的初始化順序和值。每個成員變量後面跟着用括號括起來的用來進行初始化操作的初始值或表達式。