Heim > Backend-Entwicklung > C++ > Hauptteil

Können geschützte übergeordnete Klassenmitglieder über die Initialisierungsliste der untergeordneten Klasse initialisiert werden?

DDD
Freigeben: 2024-10-25 06:07:02
Original
750 Leute haben es durchsucht

Can Protected Parent Class Members Be Initialized via Child Class's Initialization List?

Initialisieren der geschützten Datenelemente der übergeordneten Klasse in der Initialisierungsliste der untergeordneten Klasse

In der objektorientierten Programmierung können abgeleitete Klassen Funktionen von ihren Basisklassen erben . Eine häufig gestellte Frage ist, ob es möglich ist, geschützte Datenelemente der übergeordneten Klasse mithilfe der Initialisierungsliste des Konstruktors der untergeordneten Klasse zu initialisieren.

Betrachten Sie das folgende Codebeispiel:

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

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

Wann Beim Versuch, diesen Code zu kompilieren, gibt der Compiler einen Fehler aus, der besagt, dass die „Child“-Klasse kein Datenelement mit dem Namen „something“ enthält. Dies liegt daran, dass die Initialisierungsliste nur Datenelemente innerhalb der untergeordneten Klasse selbst initialisieren darf.

Um die gewünschte Funktionalität zu erreichen, ist es notwendig, der übergeordneten Klasse einen Konstruktor hinzuzufügen, der den gewünschten Anfangswert akzeptiert und weiterleitet zum Datenelement der Basisklasse. Beispiel:

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

    std::string something;
};

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

In diesem Fall initialisiert der Konstruktor der „Parent“-Klasse das „something“-geschützte Datenelement, wenn er aus der Initialisierungsliste der Child-Klasse aufgerufen wird. Somit erbt die untergeordnete Klasse das initialisierte Datenelement „etwas“ von ihrer übergeordneten Klasse.

Das obige ist der detaillierte Inhalt vonKönnen geschützte übergeordnete Klassenmitglieder über die Initialisierungsliste der untergeordneten Klasse initialisiert werden?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!