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

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

DDD
DDDOriginal
2024-10-25 07:57:02724Durchsuche

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>

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>

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!

Stellungnahme:
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