Vícenásobné třídy Base
Jak je popsáno v tématu Vícenásobná dědičnost, třída může být odvozena z více, než z jedné základní třídy.V modelu vícenásobné dědičnosti (kde jsou třídy odvozeny z více, než z jedné základní třídy), jsou základní třídy určeny pomocí prvku gramatiky base-list (více informací v části gramatiky v Přehledu).Lze například určit deklaraci třídy pro CollectionOfBook, odvozené z Collection a zBook:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
Pořadí, ve kterém jsou základní třídy uvedeny není důležité, kromě některých případ, kde jsou vyvolány konstruktory a destruktory.V těchto případech ovlivňuje pořadí, ve kterém jsou základní třídy uvedeny následující:
Pořadí, ve kterém dochází k inicializaci pomocí konstruktoru.Závisí-li kód na inicializaci části BookCollectionOfBook před částí Collection, je pořadí specifikace důležité.Inicializace probíhá v pořadí specifikace tříd v base-list.
Pořadí, ve kterém jsou vyvolány destruktory.Znovu, pokud musí být při rušení konkrétní "části" třídy přítomna druhá část, je pořadí důležité.Destruktory jsou volány v obráceném pořadí tříd uvedených v base-list.
[!POZNÁMKA]
Pořadí specifikace základních tříd může ovlivnit rozložení paměti třídy.Neprovádějte žádné rozhodnutí v programování na základě pořadí základních členů v paměti.
Při zadávání base-list nelze stejný název třídy zadat více než jednou.Je však možné, aby byla třída nepřímou základní třídou odvozené třídy více než jednou.