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
}

Voir aussi

Contrôle de l’accès aux membres de classe
Mots clés