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
, private
i 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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla