Accès des classes internes aux variables privées
En C, les classes internes sont imbriquées dans d'autres classes et disposent de privilèges d'accès spéciaux. La question se pose : les classes internes peuvent-elles accéder aux variables privées de leur classe parent ?
La réponse est oui. Les classes internes sont essentiellement des amis de la classe dans laquelle elles sont définies. Cela signifie qu'un objet d'une classe interne peut accéder directement aux membres privés d'un objet de sa classe parent.
Cependant, contrairement à Java, il n'y a pas de relation parent-enfant implicite entre un objet de classe interne et un objet de sa classe parent. Pour établir cette relation, l'objet de classe parent doit être explicitement transmis au constructeur de la classe interne.
Voici un exemple de code démontrant l'accès de la classe interne aux variables privées :
#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; }
Dans ce Par exemple, la classe interne Inner a un constructeur qui prend une référence à l'objet parent Outer comme argument. Cela établit la relation parent-enfant, permettant à la classe interne d'accéder à la variable privée var de l'objet externe.
Lorsque Inner::func() est appelé, il imprime la valeur de la variable privée var, démontrant que les classes internes peuvent effectivement accéder aux variables privées de leur classe parent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!