Maison > développement back-end > C++ > Comment les spécificateurs d'accès (privés, protégés, publics) affectent-ils l'accessibilité des membres dans l'héritage ?

Comment les spécificateurs d'accès (privés, protégés, publics) affectent-ils l'accessibilité des membres dans l'héritage ?

Mary-Kate Olsen
Libérer: 2024-12-16 18:11:11
original
120 Les gens l'ont consulté

How Do Access Specifiers (private, protected, public) Affect Member Accessibility in Inheritance?

Comprendre les spécificateurs d'accès dans l'héritage

L'héritage permet aux classes d'hériter des membres et des fonctionnalités des classes parentes, mais l'accessibilité de ces membres hérités dépend de les spécificateurs d’accès utilisés. Les spécificateurs d'accès private, protected et public contrôlent la façon dont les membres sont accessibles dans les classes héritées.

Héritage privé

  • Les membres privés d'une classe de base restent privés dans la classe dérivée.
  • Les membres protégés et publics de la classe de base deviennent privés dans la classe dérivée.
  • Les membres protégés et publics de la classe de base deviennent privés dans la classe dérivée. classe.
Les classes dérivées perdent la possibilité d'accéder aux membres privés de la classe de base.

Exemple :
class Base {
private:
    int private_member;
};

class Derived : private Base {
public:
    void accessPrivate() {
        // Error: Cannot access 'private_member' because it's private in 'Base'
    }
};
Copier après la connexion

Héritage protégé
  • Les membres publics d'une classe de base deviennent protégés dans la classe dérivée.
  • Les membres protégés de la classe de base restent protégés dans la classe dérivée.
Les classes dérivées peuvent accéder aux membres protégés de la classe de base à la fois directement et via des pointeurs vers la classe de base. objets.

Exemple :
class Base {
protected:
    int protected_member;
};

class Derived : protected Base {
public:
    void accessProtected() {
        protected_member = 100; // Allowed
    }
};
Copier après la connexion

Héritage public
  • Membres publics et protégés une classe de base devient publique dans la classe dérivée.
  • Les membres privés de la classe de base restent private dans la classe dérivée.
Les classes dérivées peuvent accéder à tous les membres publics de la classe de base, directement ou via des pointeurs.

Exemple :
class Base {
public:
    int public_member;
};

class Derived : public Base {
public:
    void accessPublic() {
        public_member = 200; // Allowed
    }
};
Copier après la connexion

Considérations :
  • Accès aux spécificateurs s'applique par classe, pas par objet.
  • Les classes dérivées ne peuvent accéder qu'aux membres de leurs propres objets de classe de base.
Les amis peuvent accéder à tous les membres d'une classe quels que soient les spécificateurs d'accès.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal