So behandeln Sie Mitgliedsvariablen mit demselben Namen bei der Vererbung
1 Wenn die Mitgliedsvariablen der Unterklasse denselben Namen haben wie die Mitgliedsvariablen der übergeordneten Klasse
2 Unterklasse erbt weiterhin die Mitglieder mit demselben Namen von der übergeordneten Klasse
3 Unterscheiden Sie Mitglieder mit demselben Namen in Unterklassen durch den Bereichsdiskriminator:: (Verwenden Sie Mitglieder mit demselben Namen der Basisklasse in der abgeleiteten Klasse und verwenden Sie explizit das Qualifikationsmerkmal für den Klassennamen)
4 , Mitglieder mit demselben Namen werden an verschiedenen Orten im Speicher gespeichert
2. Das Schlüsselwort static in abgeleiteten Klassen
Vererbung Was passiert, wenn es mit dem Schlüsselwort static kombiniert wird?
Theoretisches Wissen
Ø Die von der Basisklasse definierten statischen Mitglieder werden von allen abgeleiteten Klassen gemeinsam genutzt
Ø Entsprechend den Zugriffseigenschaften der statischen Mitglieder selbst und der Vererbung Methode der abgeleiteten Klasse, in Es gibt verschiedene Zugriffseigenschaften in der Klassenhierarchie (entsprechen der Zugriffskontrolle abgeleiteter Klassen)
Ø Um auf statische Mitglieder in einer abgeleiteten Klasse zuzugreifen, verwenden Sie das folgende Formular, um explizit Folgendes anzugeben:
Klassenname::member
oder greifen Sie über das Objekt auf den Objektnamen zu
Zusammenfassung: Der Konstruktor ist standardmäßig privat
Konzept der Mehrfachvererbung
Ø Die Vererbungsbeziehung, in der eine Klasse mehrere direkte Basisklassen hat heißt Mehrfachvererbung
Ø Mehrfachvererbungsdeklarationssyntax
von der Klasse abgeleiteter Klassenname: Basisklassenname der Zugriffskontrolle 1, Basisklassenname der Zugriffskontrolle 2, …, Basisklassenname der Zugriffskontrolle n
{
Datenelement- und Elementfunktionsdeklaration
};
Ø Klasse C kann Mitglieder der Klasse A und der Klasse B gleichzeitig basierend auf dem Zugriff erben steuern und
seine eigenen Mitglieder hinzufügen
Abgeleitete Klassenkonstruktion und Zugriff auf Mehrfachvererbung
Ø Ausführung Die Reihenfolge ähnelt dem Fall von Einzelvererbungskonstruktoren. Die Reihenfolge, in der mehrere direkte Basisklassenkonstruktoren ausgeführt werden, hängt von der Reihenfolge ab, in der jede geerbte Basisklasse beim Definieren der abgeleiteten Klasse angegeben wird.
Ø Ein abgeleitetes Klassenobjekt hat mehrere direkte oder indirekte Basisklassenmitglieder. Beim Zugriff auf Mitglieder mit unterschiedlichen Namen gibt es keine Unklarheiten. Wenn verschiedene Basisklassen Mitglieder mit demselben Namen haben, sollten diese beim Zugriff auf abgeleitete Klassenobjekte identifiziert werden.
Zwei virtuelle Vererbung
Wenn eine abgeleitete Klasse von mehreren Basisklassen abgeleitet ist und diese Basisklassen A gemeinsam haben Basisklasse: Beim Zugriff auf den in der Basisklasse deklarierten Namen kann es zu Mehrdeutigkeiten kommen
Analyse:
Basisklasse haben, dann ist die Basisklasse Beim Zugriff auf den in der Klasse deklarierten Namen
Mehrdeutigkeit kann auftreten
Ø Wenn es eine gemeinsame Basisklasse auf mehreren Vererbungspfaden gibt, dann irgendwo im Vererbungspfad
Konvergenzpunkt, diese öffentliche Basisklasse generiert mehrere Basisklassen-Unterklassen -Objekte im Objekt der abgeleiteten Klasse
Ø Damit diese öffentliche Basisklasse nur ein Unterobjekt in der abgeleiteten Klasse generiert, müssen Sie diese Basisklasse
als virtuelle Vererbung deklarieren Diese Basisklasse ist eine virtuelle Basisklasse.
Ø Die Deklaration der virtuellen Vererbung verwendet das Schlüsselwort virtual
Experiment: Beachten Sie, dass nach dem Hinzufügen des Schlüsselworts virtual der Konstruktor heißt Anzahl der Male.
3 Zusammenfassung der Vererbung
Ø Vererbung ist eine wichtige Methode zur Realisierung der Software-Wiederverwendung in der objektorientierten Programmierung. Programmierer können neue abgeleitete Klassen basierend auf vorhandenen Basisklassen definieren.
Ø Eine abgeleitete Klasse mit einfacher Vererbung hat nur eine Basisklasse. Eine abgeleitete Klasse mit Mehrfachvererbung verfügt über mehrere Basisklassen.
Ø Der Zugriff abgeleiteter Klassen auf Basisklassenmitglieder wird durch die Vererbungsmethode und die Mitgliedseigenschaften bestimmt.
Ø Rufen Sie beim Erstellen eines abgeleiteten Klassenobjekts zunächst den Basisklassenkonstruktor auf, um die Basisklassenmitglieder in der abgeleiteten Klasse zu initialisieren. Die Reihenfolge, in der Destruktoren aufgerufen werden, ist umgekehrt zur Reihenfolge, in der Konstruktoren aufgerufen werden.
Ø C++ bietet einen virtuellen Vererbungsmechanismus, um Mehrdeutigkeiten beim Mitgliedszugriff in Klassenvererbungsbeziehungen zu verhindern.
Ø Mehrfachvererbung bietet leistungsstarke Funktionen zur Wiederverwendung von Software, erhöht aber auch die Komplexität des Programms.
Das Obige ist die neunte Zusammenfassung der C++-Überprüfungspunkte – Vererbung 2. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!