Maison >développement back-end >C++ >Les classes internes en C peuvent-elles accéder aux variables privées de leur classe parent ?

Les classes internes en C peuvent-elles accéder aux variables privées de leur classe parent ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-29 08:04:10223parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn