首先說明:由於構造函數不能被繼承,因此,派生類的構造函數中除了對派生類中數據成員進行初始化外,還必須通過調用直接基類的構造函數來對基類中數據成員初始化。
一般地將,對派生類中數據成員初始化放在該派生類構造函數的函數體內,而調用基類構造函數的基類中數據成員初始化放在該構造函數的成員初始化表中。派生類構造函數的格式如下表示:
<派生類構造函數名>(<參數表>) : <成員初始化表> {
<派生類構造函數的函數體> }
例子如下:接受4個參數的BULK_quote構造函數如下:
BULK_quote(const string book,double p,size_t qty,double disc) : Quote(book,p),min_qty(qty),discount(disc){};
該函數將他的前兩個參數(分別表示ISBN和價格)傳遞給Quote的構造函數。
第一步:由Quote的構造函數負責初始化Bulk_quote的基類部分(即bookNO 和 price成員)。當quote構造函數體結束後,我們構建的對象的基類部分也就完成初始化了。
第二步:初始化由派生類直接定義的min_qty成員和discount成員。
首先應當初始化基類部分,然後按照聲明的順序依次初始化派生類的成員。