Effective C++中,條款13:是這樣寫的:初始化列表中成員列出的順序和他們在類中聲明的順序相同。
而且給出了相關例子。比如如果在類中是這樣聲明的:
class A{
...
private:
int sum1;
int sum2;
}
在構造函數中這樣寫
A::A:sum2(sum1),sum1(10){...}
這樣寫就會有問題,sum2的值是錯誤的。
但是如果這樣寫
A::A:sum2(10),sum1(10)
這樣就不會有問題。這是為什麼?在函數實現中同樣是先對sum2進行了初始化,另個結果卻不相同
取決於依賴,因為沒法保證sum1在sum2前初始化,這樣就會導致undefined behavior