Wiele klas podstawowych
Zgodnie z opisem zamieszczonym w artykule Wielokrotne dziedziczenie, klasa może pochodzić z więcej niż jednej klasy podstawowej.W modelu dziedziczenia wielokrotnego (gdzie klasy pochodzą z więcej niż jednej klasy podstawowej), klasy podstawowe są określane za pomocą elementu gramatyki lista podstawowa (zobacz sekcję gramatyki w Przeglądzie).Na przykład, można określić deklarację klasy dla CollectionOfBook, pochodzącej z Collection i Book:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
Kolejność, w której są określane klasy podstawowe nie ma znaczenia z wyjątkiem niektórych przypadków, gdy wywoływane są konstruktory i destruktory.W tych przypadkach, kolejność, w której są określane klasy podstawowe ma wpływ na:
Kolejność, w której ma miejsce inicjowanie przez konstruktor.Jeśli kod opiera się na tym, aby część Book kolekcji CollectionOfBook została zainicjowana przed częścią Collection, kolejność specyfikacji jest znacząca.Inicjowanie odbywa się w kolejności klas określonej w liście podstawowej.
Kolejność, w której wywoływane są destruktory, aby posprzątać.Ponownie, jeśli określona "część" klasy musi być obecna, kiedy niszczona jest inna część, kolejność ma znaczenie.Destruktory są wywoływane w odwrotnej kolejności klas do określonej na liście podstawowej.
[!UWAGA]
Kolejność specyfikacji klas podstawowych może wpływać na układ pamięci klasy.Nie należy podejmować żadnych decyzji programistycznych na podstawie kolejności elementów podstawowych w pamięci.
Podczas określania listy podstawowej, nie można podać tej samej nazwy klasy więcej niż jeden raz.Jednak możliwe jest, aby klasa mogła być pośrednią podstawą dla klasy pochodnej więcej niż raz.