基類初始化
這里沒有提到的構(gòu)造函數(shù)初始化程序列表使用的一個重要原因是基類的初始化。
根據(jù)構(gòu)造的順序,基類應(yīng)該在子類之前構(gòu)造。如果沒有構(gòu)造函數(shù)初始化程序列表,這是可能的,如果您的基類具有默認(rèn)構(gòu)造函數(shù),該構(gòu)造函數(shù)將在輸入子類的構(gòu)造函數(shù)之前調(diào)用。
但是,如果基類只有參數(shù)化構(gòu)造函數(shù),則必須使用構(gòu)造函數(shù)初始化程序列表來確?;愒谧宇愔氨怀跏蓟?/trans>
只具有參數(shù)化構(gòu)造函數(shù)的子對象的初始化
效率
使用構(gòu)造函數(shù)初始化程序列表,可以將數(shù)據(jù)成員初始化為代碼中需要的狀態(tài),而不是首先將其初始化為默認(rèn)狀態(tài)&然后將其狀態(tài)更改為代碼中所需的狀態(tài)。
初始化非靜態(tài)Const數(shù)據(jù)成員
如果類中的非靜態(tài)Const數(shù)據(jù)成員具有默認(rèn)構(gòu)造函數(shù)&不使用構(gòu)造函數(shù)初始化程序列表,則無法將它們初始化到預(yù)期狀態(tài),因為它們將被初始化為默認(rèn)狀態(tài)。
引用數(shù)據(jù)成員的初始化
當(dāng)編譯器進入構(gòu)造函數(shù)時,引用數(shù)據(jù)成員必須被初始化,因為引用不能在以后聲明和初始化。這只有在構(gòu)造函數(shù)初始化程序列表中才有可能。