Freigeben über


Mehrere Basisklassen

Wie in Mehrfachvererbungbeschrieben, kann eine Klasse von einer Basisklasse abgeleitet werden.In einem Modell Mehrfachvererbungs (wobei Klassen aus mehr als einer Basisklasse abgeleitet sind), werden die Basisklassen unter Verwendung des angegebenen Elements Grammatik Liste Basis (siehe Grammatik im Abschnitt Übersicht).So können beispielsweise die Klassendeklaration für CollectionOfBook, das von abgeleiteten Book, und Collection angegeben werden:

// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
    // New members
};

Die Reihenfolge, in der Basisklasse angegeben ist, werden nur in bestimmten Fällen nicht relevant, in denen Konstruktoren und Destruktoren aufgerufen werden.In diesen Fällen wirkt sich die Reihenfolge, in der Basisklasse angegeben werden, wie folgt vor:

  • Die Reihenfolge, in der die Initialisierung von Konstruktor ausgeführt wird.Wenn der Code auf dem Book Teil der vor dem Collection sind Teil CollectionOfBook initialisiert wird, ist die Reihenfolge der Spezifikation von Bedeutung.Initialisierung wird in der Reihenfolge ausgeführt, die die Klassen in der Basis Listeangegeben werden.

  • Die Reihenfolge, in der Destruktoren aufgerufen werden, um zu bereinigen.Auch wenn ein bestimmter „Part“ der Klasse vorhanden sein muss, wenn der andere Teil zerstört wird, ist die Reihenfolge relevant.Destruktoren werden in umgekehrter Reihenfolge der Klassen aufgerufen, die auf der Basis Listeangegeben werden.

    HinweisHinweis

    Die Reihenfolge der Spezifikation für Basisklassen Arbeitsspeicher kann das Lay-out der Klasse beeinflussen.Wenden Sie keine Programmierung Entscheidungen im Auftrag der Basismember im Speicher basierende werden.

Wenn Sie die Basis Listeangeben, können Sie denselben Klassennamen nicht mehrmals angeben.Es ist jedoch möglich, für eine Klasse, eine indirekte Basis in einer abgeleiteten Klasse mehrfach.

Siehe auch

Referenz

Abgeleitete Klassen