chronione (C++)
protected:
[member-list]
protected base-class
Uwagi
Słowo kluczowe protected określa dostęp do członków klasy w Lista członków do następnego specyfikatora dostępu (publiczny lub private) lub na końcu definicji klasy.Członkowie klasy zadeklarowane jako protected mogą być używane tylko przez następujące:
Funkcja członkowska klasy, która pierwotnie deklaruje te członki.
Znajomi klasy, która pierwotnie deklaruje te członki.
Klasy pochodne z publicznym lub chronionym dostępem do klasy, która pierwotnie deklaruje te członki.
Bezpośrednio prywatne klasy pochodne, które także mają dostęp do prywatnych chronionych elementów członkowskich.
Gdy nazwę klasy podstawowej poprzedza słowo kluczowe protected, określa ono, że publiczne i chronione elementy członkowskie klasy podstawowej są chronionymi elementami członkowskimi klas pochodnych.
Elementy chronione nie są tak prywatne jak członkowie private, które są dostępne tylko dla członków klasy, w której są one zgłoszone, ale nie są tak publiczne jak członkowie public, które są dostępne w dowolnej funkcji.
Chronione elementy członkowskie, które również są deklarowane jako statyczne nie są dostępne dla żadnej funkcji friend ani członka klasy pochodnej.Chronione elementy członkowskie, które nie są zadeklarowane jako statyczne są dostępne do znajomych i funkcji członkowskich w klasie pochodnej tylko przez wskaźnik, aby odwołać się do nich lub obiektu klasy pochodnej.
Aby uzyskać powiązane informacje, zobacz friend, public, private, a także tabelę dostępu do elementu członkowskiego w Kontrolowanie dostępu do elementów członkowskich klasy.
Specyficzne dla /clr
W typach CLR, słowa kluczowe specyfikatorów dostępu C++ (public, private i protected) mogą wpływać na widoczność typów i metod w odniesieniu do zestawów.Aby uzyskać więcej informacji, zobacz Widoczność typów i członków.
[!UWAGA]
Pliki skompilowane z /LN nie są narażone na ten problem.W tym przypadku, będą widoczne wszystkie klasy zarządzane (publiczne lub prywatne).
Przykład
// 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
}