protected (C++)

Sintassi

protected:
   [member-list]
protected base-class

Osservazioni:

La protected parola chiave specifica l'accesso ai membri della classe nell'elenco dei membri fino all'identificatore di accesso successivo (public o private) o alla fine della definizione della classe. I membri della classe dichiarati come protected possono essere usati solo dai seguenti:

  • Funzioni membro della classe che ha in origine dichiarato questi membri.

  • Elementi friend della classe che ha in origine dichiarato questi membri.

  • Classi derivate con accesso pubblico o protetto dalla classe che ha in origine dichiarato questi membri.

  • Classi dirette derivate in modo privato che dispongono anche di accesso privato ai membri protetti.

Quando si precede il nome di una classe base, la protected parola chiave specifica che i membri pubblici e protetti della classe base sono membri protetti delle relative classi derivate.

I membri protetti non sono privati come private membri, accessibili solo ai membri della classe in cui sono dichiarati, ma non sono pubblici come public membri, accessibili in qualsiasi funzione.

Membri protetti dichiarati anche come static accessibili a qualsiasi funzione friend o membro di una classe derivata. Membri protetti che non sono dichiarati come static sono accessibili a amici e funzioni membro in una classe derivata solo tramite un puntatore a, un riferimento o un oggetto della classe derivata.

Per informazioni correlate, vedere friend, public, private e la tabella di accesso ai membri in Controllo dell'accesso ai membri della classe.

Specifico di /clr

Nei tipi CLR, le parole chiave dell'identificatore di accesso C++ (public, privatee protected) possono influire sulla visibilità dei tipi e dei metodi relativi agli assembly. Per altre informazioni, vedere Controllo di accesso membro.

Nota

I file compilati con /LN non sono interessati da questo comportamento. In questo caso, tutte le classi gestite (sia pubbliche che private) saranno visibili.

Specifico di END /clr

Esempio

// 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
}

Vedi anche

Controllo dell'accesso ai membri di classi
Parole chiave