protégé (C++)
protected:
[member-list]
protected base-class
Notes
Le mot clé d' protected spécifie l'accès aux membres de la classe dans la liste des membres jusqu ' à le spécificateur d'accès suivant (public ou private) ou à la fin de la définition de classe.Les membres de classe déclarés comme protected peuvent être uniquement utilisés par les éléments suivants :
fonctions membres de la classe qui a initialement déclaré ces membres.
Friends de la classe qui a initialement déclaré ces membres.
Classes dérivées avec le public ou un accès protégé de la classe qui a initialement déclaré ces membres.
dirigez en privé les classes dérivées qui ont également accès privé aux membres protégés.
En faisant précéder le nom d'une classe de base, le mot clé d' protected spécifie que le public et les membres protégés de la classe de base est des membres protégés de ses classes dérivées.
Les membres protégés ne sont pas aussi privés que les membres d' private , accessibles uniquement aux membres de la classe dans lequel ils sont déclarés, mais ils ne sont pas aussi publics que les membres de public , accessibles dans toute fonction.
Membres protégés qui sont également déclarés comme statique sont accessibles à toute fonction friend ou fonction membre d'une classe dérivée.Membres protégés qui ne sont pas déclarés comme statique sont accessibles aux friends et aux fonctions membres dans une classe dérivée que via un pointeur vers, référence à, ou objet de la classe dérivée.
Pour plus d'informations, consultez fonction friend, public, privé, et le tableau d'accès de membre dans Contrôler l'accès aux membres de classe.
détail de /clr
Dans les types CLR, les mots clés de spécificateur d'accès C++ (public, private, et protected) peuvent affecter la visibilité des types et des méthodes par rapport à les assemblys.Pour plus d'informations, consultez Type de visibilité et de membre.
[!REMARQUE]
Les fichiers compilés avec /LN ne sont pas affectés par ce comportement.Dans ce cas, toutes les classes managées (public ou privé) seront visibles.
Exemple
// keyword_protected.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class X {
public:
void setProtMemb( int i ) { m_protMemb = i; }
void Display() { cout << m_protMemb << endl; }
protected:
int m_protMemb;
void Protfunc() { cout << "\nAccess allowed\n"; }
} x;
class Y : public X {
public:
void useProtfunc() { Protfunc(); }
} y;
int main() {
// x.m_protMemb; error, m_protMemb is protected
x.setProtMemb( 0 ); // OK, uses public access function
x.Display();
y.setProtMemb( 5 ); // OK, uses public access function
y.Display();
// x.Protfunc(); error, Protfunc() is protected
y.useProtfunc(); // OK, uses public access function
// in derived class
}