Basisklassenkonstruktoren und Zuweisungsoperatoren in abgeleiteten Klassen verwenden
In C ermöglicht die Vererbung abgeleiteten Klassen, bestimmte Merkmale ihrer Basisklassen zu erben. Wenn eine abgeleitete Klasse jedoch denselben Satz an Konstruktoren und Zuweisungsoperatoren wie ihre Basisklasse erfordert, kann es erforderlich sein, diese Funktionen in der abgeleiteten Klasse neu zu schreiben. Dies kann eine mühsame Aufgabe sein, insbesondere für Zuweisungsoperatoren, die Zugriff auf private Mitgliedsvariablen benötigen.
Glücklicherweise gibt es eine alternative Lösung. Abgeleitete Klassen können explizit Basisklassenkonstruktoren und Zuweisungsoperatoren aufrufen. Mit dieser Technik können sie die vorhandene Implementierung nutzen, ohne sie neu schreiben zu müssen.
Betrachten Sie das folgende Codebeispiel:
<code class="cpp">class Base { public: Base(); Base(const string& s); Base(const Base& b) { (*this) = b; } Base& operator=(const Base & b); private: // ... (private member variables and functions) }; class Derived : public Base { public: // Override the "foo" function without modifying other aspects of the base class virtual void foo() override; };</code>
In diesem Beispiel erbt Derived die Konstruktoren und den Zuweisungsoperator von Base. Diese Funktionen müssen nicht explizit definiert werden. Stattdessen ruft der Compiler beim Erstellen eines abgeleiteten Objekts oder beim Zuweisen eines Basisobjekts zu einem abgeleiteten Objekt automatisch den entsprechenden Basisklassenkonstruktor oder Zuweisungsoperator auf.
Die gleiche Strategie kann für Zuweisungsoperatoren verwendet werden:
<code class="cpp">class Base { public: // ... (private member variables and functions) Base(const Base& b) { /* ... */ } Base& operator=(const Base& b) { /* ... */ } }; class Derived : public Base { public: int additional_; // Call the base assignment operator within the derived operator Derived& operator=(const Derived& d) { Base::operator=(d); additional_ = d.additional_; return *this; } };</code>
Diese Technik ermöglicht es abgeleiteten Klassen, die Funktionalität ihrer Basisklassen vollständig zu nutzen und dabei nur notwendige Verhaltensweisen zu überschreiben oder hinzuzufügen. Es vereinfacht die Vererbung, da es nicht mehr erforderlich ist, komplexe Basisklassenkonstruktoren oder Zuweisungsoperatoren neu zu schreiben.
Das obige ist der detaillierte Inhalt vonWie können abgeleitete Klassen Basisklassenkonstruktoren und Zuweisungsoperatoren nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!