protected (C++)
Syntaxe
protected:
[member-list]
protected base-class
Notes
Le mot clé protected
spécifie l’accès aux membres de classe de member-list jusqu’au 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 ce qui suit :
Les fonctions membres de la classe qui a initialement déclaré ces membres.
Les friends de la classe qui a initialement déclaré ces membres.
Les classes dérivées ayant un accès public ou protégé à partir de la classe qui a initialement déclaré ces membres.
Les classes directes dérivées de manière privée qui ont également un accès privé aux membres protégés.
Lorsqu’il précède le nom d'une classe de base, le mot clé protected
indique que les membres publics et protégés de la classe de base sont des membres protégés de sa classe dérivée.
Les membres protégés ne sont pas aussi privés que les membres private
, qui sont accessibles uniquement par les membres de la classe dans laquelle ils sont déclarés, mais ils ne sont pas aussi publics que les membres public
, accessibles dans toute fonction.
Les membres protégés qui sont également déclarés comme static
sont accessibles par toute fonction membre ou friend d’une classe dérivée. Les membres protégés qui ne sont pas déclarés comme static
sont accessibles aux fonctions membres et friends dans une classe dérivée uniquement via un pointeur ou une référence vers la classe dérivée ou un objet de celle-ci.
Pour obtenir des informations connexes, consultez friend, public, private et le tableau d'accès aux membres dans Contrôle de l’accès aux membres de classe.
Spécifique /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 quant aux assemblys. Pour plus d’informations, consultez Contrôle d'accès aux membres.
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ées) seront visibles.
Spécifique END /clr
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 the derived class
}