多個基底類別
如所述多重繼承,可以從一個以上的基底類別衍生一個類別。 在多重繼承模型 (類別衍生自一個以上的基底類別) 中,基底類別使用指定的基底清單 文法的項目 (在 [文法] 區段,請參閱 概觀)。 比方說,類別宣告為CollectionOfBook、 衍生從Collection和Book,您可以指定:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
基底類別所指定的順序並不重要但在某些情況下,建構函式和解構函式會叫用的。 在這些情況下,指定基底類別中的順序會影響下列:
藉由建構函式環境中的哪一個初始設定順序。 如果您的程式碼依賴Book的部分CollectionOfBook之前先初始化Collection組件規格的順序非常重要。 在類別中指定的順序中的初始化發生基底清單。
在其中,解構函式會叫用清除順序。 同樣地,如果特定 「 組件 」 的類別必須有另一個組件已被終結時,順序就非常重要。 解構函式呼叫中所指定的類別次序反轉基底清單。
注意事項 基底類別規格的順序會影響該類別的記憶體配置。請勿在記憶體中的基底成員的順序依任何有關程式設計的決策。
當指定基底清單,您無法多次指定相同的類別名稱。 不過,很可能不只一次是在衍生類別來間接基底類別。