Plusieurs classes de base
Comme décrit dans héritage multiple, une classe peut être dérivée de plusieurs classes de base.Dans un modèle d'héritage multiple (où les classes sont dérivées de plusieurs classes de base), les classes de base sont spécifiées en utilisant l'élément de syntaxe de base-liste (consultez la section de syntaxe dans Vue d'ensemble).Par exemple, la déclaration de classe de CollectionOfBook, les dérivées d' Collection et d' Book, peuvent être spécifiées :
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
L'ordre dans lequel les classes de base sont spécifiées n'a pas d'importance sauf dans certains cas où les constructeurs et les destructeurs sont appelés.Dans ces cas, l'ordre dans lequel les classes de base sont spécifiées affecte ce qui suit :
L'ordre dans lequel l'initialisation du constructeur a lieu.Si votre code dépend de la partie d' Book d' CollectionOfBook à initialiser avant que la partie d' Collection , l'ordre des spécifications soit significative.L'initialisation a lieu dans l'ordre dans lequel les classes sont spécifiées dans la base-liste.
L'ordre dans lequel les destructeurs sont appelés pour nettoyer.De même, si une « partie » particulière de la classe doit être présent lorsque l'autre partie est détruite, la commande est important.Les destructeurs sont appelés dans l'ordre inverse des classes spécifiées dans la base-liste.
[!REMARQUE]
L'ordre de spécification des classes de base peut affecter la disposition en mémoire de la classe.N'avez aucune décision de programmation basée sur l'ordre des membres de base en mémoire.
en spécifiant la base- liste, vous ne pouvez pas spécifier le même nom de classe plus d'une fois.Toutefois, il est possible qu'une classe soit une base indirecte à une classe dérivée plusieurs fois.