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
}