Heim > Backend-Entwicklung > C++ > Wie werden Basisklassen-Mitgliedsvariablen in einem abgeleiteten Klassenkonstruktor korrekt initialisiert?

Wie werden Basisklassen-Mitgliedsvariablen in einem abgeleiteten Klassenkonstruktor korrekt initialisiert?

Linda Hamilton
Freigeben: 2024-12-05 01:14:10
Original
742 Leute haben es durchsucht

How to Correctly Initialize Base Class Member Variables in a Derived Class Constructor?

So initialisieren Sie Basisklassen-Mitgliedsvariablen im Konstruktor abgeleiteter Klassen

In der objektorientierten Programmierung gibt es häufig abgeleitete Klassen, die erben Basisklassen. Beim Erstellen eines Konstruktors in einer abgeleiteten Klasse ist es wichtig, die von der Basisklasse geerbten Mitgliedsvariablen ordnungsgemäß zu initialisieren.

Beachten Sie den folgenden Code:

class A {
public:
    int a, b;
};

class B : public A {
    B() : A(), a(0), b(0) {
    }
};
Nach dem Login kopieren

In diesem Beispiel die abgeleitete Klasse B versucht, die Mitgliedsvariablen a und b innerhalb seines eigenen Konstruktors zu initialisieren. Dies ist jedoch ein falscher Ansatz. Der richtige Weg, Basisklassen-Mitgliedsvariablen in einer abgeleiteten Klasse zu initialisieren, besteht darin, den Konstruktor der Basisklasse zu verwenden:

class A {
protected:
    A(int a, int b) : a(a), b(b) {} // Accessible to derived classes
private:
    int a, b; // Keep these variables private in A
};

class B : public A {
public:
    B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0.
    {
    }
};
Nach dem Login kopieren

Indem man den Basisklassenkonstruktor zugänglich macht (geschützt oder öffentlich) und ihn im Konstruktor der abgeleiteten Klasse aufruft , initialisieren wir die geerbten Mitgliedsvariablen ordnungsgemäß. Dieser Ansatz stellt sicher, dass die Basisklasse ordnungsgemäß initialisiert wird, bevor der Code der abgeleiteten Klasse ausgeführt wird.

Beachten Sie, dass es nicht empfohlen wird, die Mitgliedsvariablen der Basisklasse in der abgeleiteten Klasse öffentlich zu machen (wie im falschen Beispiel), da dies zu Problemen führt Kapselungsprinzip, das den externen Zugriff auf geschützte oder private Daten ermöglicht.

Das obige ist der detaillierte Inhalt vonWie werden Basisklassen-Mitgliedsvariablen in einem abgeleiteten Klassenkonstruktor korrekt initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage