Share via


protected (C++)

protected:
   [member-list]
protected base-class

Note

La parola chiave protected specifica l'accesso ai membri della classe in member-list fino all'identificatore di accesso successivo (public o private) o la fine della definizione della classe. I membri della classe dichiarati come protected possono essere utilizzati solo dai seguenti elementi:

  • 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 precede il nome di una classe base, la parola chiave protected specifica che i membri pubblici e protetti della classe base sono membri protetti delle relative classi derivate.

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

I membri protetti dichiarati anche come static sono accessibili a qualsiasi elemento friend o funzione membro di una classe derivata. I membri protetti non dichiarati come static sono accessibili agli elementi friend e alle funzioni membro di una classe derivata solo tramite un puntatore a, un riferimento a o un oggetto di tale classe.

Per ulteriori informazioni, 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, private e protected) possono influire sulla visibilità dei tipi e dei metodi relativamente agli assembly. Per ulteriori informazioni, vedere Visibilità di tipo e membro.

Nota

Tale comportamento non influisce sui file compilati con /LN.In questo caso, tutte le classi gestite (sia pubbliche che private) saranno visibili.

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 derived class
}

Vedere anche

Riferimenti

Controllo dell'accesso ai membri di classi

Parole chiave C++