Heim > Backend-Entwicklung > C++ > Können untergeordnete Klassen geschützte übergeordnete Mitglieder über Initialisierungslisten initialisieren?

Können untergeordnete Klassen geschützte übergeordnete Mitglieder über Initialisierungslisten initialisieren?

DDD
Freigeben: 2024-10-25 07:57:02
Original
786 Leute haben es durchsucht

Can Child Classes Initialize Protected Parent Members Through Initialization Lists?

Initialisierung geschützter übergeordneter Elemente in der Initialisierungsliste der untergeordneten Klasse

Beim Erben einer Klasse mit geschützten Datenelementen kann es wünschenswert sein, diese mithilfe der Initialisierungsliste des untergeordneten Elements zu initialisieren Konstruktor der Klasse. Dieser Ansatz führt jedoch häufig zu Kompilierungsfehlern.

In diesem Beispiel:

<code class="cpp">class Parent {
protected:
    std::string something;
};

class Child : public Parent {
private:
    Child() : something("Hello, World!") {}
};</code>
Nach dem Login kopieren

Das Kompilieren dieses Codes führt zu einem Fehler, da die untergeordnete Klasse Child kein Mitglied mit dem Namen „some“ hat .

Um dieses Problem zu beheben, muss die übergeordnete Klasse Parent einen Konstruktor definieren, der das geschützte Mitglied etwas initialisiert. Dieser Konstruktor kann als geschützt deklariert werden, sodass abgeleitete Klassen darauf zugreifen können.

Der untenstehende geänderte Code wird erfolgreich kompiliert:

<code class="cpp">class Parent {
protected:
    std::string something;
    Parent(const std::string& something) : something(something) {}
};

class Child : public Parent {
private:
    Child() : Parent("Hello, World!") {}
};</code>
Nach dem Login kopieren

In diesem geänderten Code leitet der geschützte Konstruktor in der übergeordneten Klasse weiter das Initialisierungsargument für das Something-Mitglied, wodurch die untergeordnete Klasse das geschützte Mitglied der übergeordneten Klasse während ihrer eigenen Initialisierung initialisieren kann.

Durch Befolgen dieser Syntax wird es möglich, geschützte übergeordnete Mitglieder mithilfe der Initialisierungsliste der untergeordneten Klasse zu initialisieren größere Kontrolle und Flexibilität bei der Objektinitialisierung über Vererbungshierarchien hinweg.

Das obige ist der detaillierte Inhalt vonKönnen untergeordnete Klassen geschützte übergeordnete Mitglieder über Initialisierungslisten initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage