Più classi base
come descritto in ereditarietà multipla, la classe può essere derivata da più classi base.In un modello di ereditarietà multipla (dove le classi che derivano da più classi base), le classi di base sono specificate utilizzando il base-elenco elemento di sintassi (vedere la sezione della grammatica in cenni preliminari).Ad esempio, la dichiarazione di classe per CollectionOfBook, derivato da Collection e Book, è possibile specificare:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
L'ordine in cui le classi di base sono specificate non è significativo salvo in determinati casi in cui i costruttori e distruttori vengono richiamati.In questi casi, l'ordine in cui le classi di base sono specificate su quanto segue:
L'ordine in cui inizializzazione del costruttore ha luogo.Se il codice si basa su Book parte di CollectionOfBook per essere inizializzato prima di Collection parte, l'ordine di specifica è significativo.L'inizializzazione è stataordine che le classi vengono specificati in base-elenco.
L'ordine in cui i distruttori vengono richiamati per pulire.Nuovamente, se una “parte„ particolare della classe deve essere presente quando un'altra parte è distruggendosi, l'ordine è significativo.I distruttori vengono chiamatiordine inverso le classi specificate in base-elenco.
[!NOTA]
L'ordine di specifica delle classi di base può influire sul layout di memoria della classe.Non effettuare alcune decisioni di pianificazione basate sull'ordine dei membri di base in memoria.
Quando si specifica base-elenco, non è possibile specificare più di uno volta lo stesso nome della classe.Tuttavia, è più volte possibile che una classe sia una classe base indiretta a una classe derivata.