chronione (C++)

Składnia

protected:
   [member-list]
protected base-class

Uwagi

Słowo protected kluczowe określa dostęp do składowych klas na liście składowej do następnego specyfikatora dostępu (public lub private) lub końca definicji klasy. Składowe klasy zadeklarowane jako protected mogą być używane tylko przez następujące elementy:

  • Funkcje składowe klasy, która pierwotnie zadeklarowała te składowe.

  • Przyjaciół klasy, która pierwotnie zadeklarowała te składowe.

  • Klasy pochodne z publicznym lub chronionym dostępem do klasy, która pierwotnie zadeklarowała te składowe.

  • Bezpośrednie klasy pochodne prywatnie, które także mają prywatny dostęp do chronionych składowych.

W przypadku poprzedzania nazwy klasy bazowej słowo kluczowe określa, protected że publiczne i chronione elementy członkowskie klasy bazowej są chronionymi elementami członkowskimi jej klas pochodnych.

Chronione elementy członkowskie nie są tak prywatne jak private elementy członkowskie, które są dostępne tylko dla składowych klasy, w której są deklarowane, ale nie są tak publiczne, jak public elementy członkowskie, które są dostępne w żadnej funkcji.

Chronione elementy członkowskie, które są również zadeklarowane jako static dostępne dla dowolnej funkcji zaprzyjaźnionej lub składowej klasy pochodnej. Chronione składowe, które nie są deklarowane jako static dostępne dla znajomych i funkcji składowych w klasie pochodnej tylko za pomocą wskaźnika do, odwołania do lub obiektu klasy pochodnej.

Aby uzyskać powiązane informacje, zobacz friend, public, private i the member-access table ( Kontrola dostępu do składowych klasy).

Specyficzne dla /clr

W typach CLR słowa kluczowe specyfikatora dostępu języka C++ (public, privatei protected) mogą mieć wpływ na widoczność typów i metod w odniesieniu do zestawów. Aby uzyskać więcej informacji, zobacz Kontrola dostępu do składowych.

Uwaga

Takie zachowanie nie ma wpływu na pliki skompilowane za pomocą /LN . W tym przypadku, widoczne będą wszystkie klasy zarządzane (publiczne lub prywatne).

KONIEC specyficzne dla /clr

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

Zobacz też

Kontrolowanie dostępu do składowych klas
Słowa kluczowe