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; }
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!