Heim > Backend-Entwicklung > C++ > Können innere Klassen in C auf die privaten Variablen ihrer übergeordneten Klasse zugreifen?

Können innere Klassen in C auf die privaten Variablen ihrer übergeordneten Klasse zugreifen?

Mary-Kate Olsen
Freigeben: 2024-11-29 08:04:10
Original
234 Leute haben es durchsucht

Can Inner Classes in C   Access Their Parent Class's Private Variables?

Zugriff innerer Klassen auf private Variablen

In C sind innere Klassen in anderen Klassen verschachtelt und verfügen über besondere Zugriffsrechte. Es stellt sich die Frage: Können innere Klassen auf private Variablen ihrer übergeordneten Klasse zugreifen?

Die Antwort lautet „Ja“. Innere Klassen sind im Wesentlichen Freunde der Klasse, innerhalb derer sie definiert sind. Dies bedeutet, dass ein Objekt einer inneren Klasse direkt auf die privaten Mitglieder eines Objekts seiner übergeordneten Klasse zugreifen kann.

Anders als in Java gibt es jedoch keine implizite Eltern-Kind-Beziehung zwischen einem inneren Klassenobjekt und einem Objekt seiner übergeordneten Klasse. Um diese Beziehung herzustellen, muss das Objekt der übergeordneten Klasse explizit an den Konstruktor der inneren Klasse übergeben werden.

Hier ist ein Codebeispiel, das den Zugriff der inneren Klasse auf private Variablen demonstriert:

#include <iostream>

class Outer {
private:
    int var = 4;
    static const char* const MYCONST = "myconst";

public:
    class Inner {
    public:
        Inner(Outer& parent) : parent(parent) {}
        void func() {
            std::cout << parent.var << std::endl;
        }

    private:
        Outer& parent;
    };
};

int main() {
    Outer outer;
    Outer::Inner inner(outer);
    inner.func();
    return 0;
}
Nach dem Login kopieren

Hier Beispielsweise verfügt die innere Klasse Inner über einen Konstruktor, der einen Verweis auf das übergeordnete Outer-Objekt als Argument verwendet. Dadurch wird die Eltern-Kind-Beziehung hergestellt, sodass die innere Klasse auf die private Variable var des äußeren Objekts zugreifen kann.

Wenn Inner::func() aufgerufen wird, gibt es den Wert der privaten Variablen var aus, um dies zu demonstrieren dass innere Klassen tatsächlich auf private Variablen ihrer übergeordneten Klasse zugreifen können.

Das obige ist der detaillierte Inhalt vonKönnen innere Klassen in C auf die privaten Variablen ihrer übergeordneten Klasse zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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