class Session {
int mem1 = 10; // 等號初始化
double mem2 {1966.54}; // 列表初始化 (C++11)
short mem3; // 無默認值
public:
Session(); // #1
Session(short s) : mem3(s) {} // #2
Session(int n, double d, short s) : mem1(n), mem2(d), mem3(s) {} // #3
};
編譯器會為未在初始化列表中顯式出現的成員,自動插入類內默認初始化:
Session() : mem1(10), mem2(1966.54) {} // #1 等價
Session(short s) : mem1(10), mem2(1966.54), mem3(s) {} // #2 等價
#3 顯式初始化列表會覆蓋類內默認值。
= 和 {} (列表初始化)。() 圓括號初始化(避免與函數聲明混淆)。constexpr 整型)。