確保每個對象的數據成員在創建時擁有合適的初始值。
語法:ClassName::ClassName(params) : member1(val1), member2(val2) { ... }
關鍵差異:
必須使用初始化列表的情況:
const 或引用類型成員(只能初始化,不能賦值)。成員初始化順序:按類中聲明順序,而非初始化列表順序。建議列表順序與聲明順序一致,避免用未初始化成員初始化其他成員。
class ConstRef {
int i; const int ci; int &ri;
public:
ConstRef(int ii) : i(ii), ci(ii), ri(ii) {} // 正確:初始化列表
// ConstRef(int ii) { i=ii; ci=ii; ri=ii; } // 錯誤:const 和引用不能賦值
};
class SalesItem {
string isbn; int units; double revenue;
public:
SalesItem(const string &book, int cnt, double price)
: isbn(book), units(cnt), revenue(cnt * price) {} // 表達式初始化
SalesItem() : isbn(10, '9'), units(0), revenue(0.0) {} // 類類型成員指定構造
};