chráněné (C++)
protected:
[member-list]
protected base-class
Poznámky
protected Klíčové slovo určuje přístup pro členy třídy v seznam členů až do další specifikátor přístupu (veřejné nebo private) nebo na konci definice třídy.Členové třídy deklarován jako protected mohou používat pouze následující:
Funkce členů třídy, která původně navržené těchto členů.
Přátelé třídy, která původně navržené těchto členů.
Třídy odvozeny veřejné nebo chráněný přístup ze třídy, které bylo původně deklarováno těchto členů.
Přímé soukromě odvozených tříd, které mají také soukromý přístup k chráněné členy.
Při předchozí název základní třídy protected klíčové slovo určuje, že veřejné a chráněné členy základní třídy jsou chráněné členy odvozené třídy.
Chráněné členy nejsou jako soukromé jako private členů, které jsou přístupné pouze členy třídy, které jsou deklarovány, ale nejsou jako veřejné, jako veřejné členů, které jsou k dispozici všechny funkce.
Chráněné členy, které také deklarovat jako statické jsou k dispozici všechny funkce přítele nebo člen odvozené třídy.Chráněné členy, které není deklarován jako statické jsou přístupné přátelům a funkce členů v odvozené třídě pouze prostřednictvím ukazatele na odkaz nebo objekt odvozené třídy.
Související informace naleznete v tématu přítele, veřejné, soukroméa v tabulce člena přístup v Řízení přístupu členy třídy.
zvláštní /CLR
V modulu CLR typy C++ přístup specifikátor klíčová slova (veřejné, private, a protected) může ovlivnit viditelnost typy a metody při sestavení.Další informace naleznete v tématu Typ a viditelnost členské.
[!POZNÁMKA]
Soubory kompilována s /LN toto chování neovlivní.V tomto případě budou všechny spravované třídy (veřejná nebo soukromá) zobrazeny.
Příklad
// 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
}