多個基底類別
如多重繼承中所述,類別可以從多個基底類別衍生。 在多重繼承模型中 (其中類別是從多個基底類別衍生),基底類別是使用 base-list 文法項目所指定 (請參閱概觀中的<文法>一節)。 例如,可以指定衍生自 Collection 和 Book 的 CollectionOfBook 類別宣告:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
除非是在叫用建構函式和解構函式的特定情況下,否則指定基底類別的順序並不重要。 在這些情況下,指定基底類別的順序會影響下列各項:
建構函式進行初始化的順序。 如果程式碼要求 CollectionOfBook 的 Book 部分必須在 Collection 部分之前初始化,則指定的順序就很重要。 初始化會依照在 base-list 中指定類別的順序進行。
叫用解構函式進行清除的順序。 同樣地,如果類別的特定「部分」必須在其他部分終結時存在,則順序就很重要。 解構函式是依照在 base-list 中指定類別的相反順序呼叫。
注意事項
基底類別的指定順序可能會影響類別的記憶體配置。請不要依據記憶體中基底成員的順序做出任何程式設計上的決策。
指定 base-list 時,您無法多次指定相同的類別名稱。 不過,類別可以多次做為衍生類別的間接基底。