Udostępnij za pośrednictwem


Specyfikatory dostępu do klas podstawowych

Kontrola dwa czynniki składniki klasy podstawowej, które są dostępne w klasie pochodnej; Czynniki te samej kontroli dostępu do elementy dziedziczone w klasie pochodnej:

  • Czy pochodna klasy deklaruje, za pomocą klasy bazowej publicznych dostępu specyfikatora w head klasy (head klasy jest opisane w sekcji gramatyki w Określające typy klas).

  • Co dostępu do członka znajduje się w klasie podstawowej.

W poniższej tabeli przedstawiono interakcji między te czynniki oraz jak określić dostęp członek klasy base.

Członek Access w klasie podstawowej

prywatne

chronione

Publicznego

Zawsze niedostępne, niezależnie od wyprowadzenie dostępu

Prywatne w klasie pochodnej korzystania z prywatnego wyprowadzenie

Prywatne w klasie pochodnej korzystania z prywatnego wyprowadzenie

 

Chronione w klasie pochodnej, jeśli używasz wyprowadzenie chronionych

Chronione w klasie pochodnej, jeśli używasz wyprowadzenie chronionych

 

Chronione w klasie pochodnej, jeśli używasz publicznego wyprowadzenie

Publiczne w klasie pochodnej, jeśli używasz publicznego wyprowadzenie

Poniższy przykład ilustruje to:

// access_specifiers_for_base_classes.cpp
class BaseClass
{
public:
    int PublicFunc();    // Declare a public member.
protected:
    int ProtectedFunc(); // Declare a protected member.
private:
    int PrivateFunc();   // Declare a private member.
};

// Declare two classes derived from BaseClass.
class DerivedClass1 : public BaseClass
{
};

class DerivedClass2 : private BaseClass
{
};

int main()
{
}

W DerivedClass1, funkcja Członkowskie PublicFunc jest publicznego członka i ProtectedFunc jest chroniony członek, ponieważ BaseClass jest klasą bazową publicznych.PrivateFuncjest oznaczony jako prywatny BaseClass, i jest niedostępna dla wszystkich klas pochodnych.

W DerivedClass2, funkcje PublicFunc i ProtectedFunc są uważane za członków prywatnych, ponieważ BaseClass jest klasą bazową prywatnych.Ponownie PrivateFunc jest oznaczony jako prywatny BaseClass, i jest niedostępna dla wszystkich klas pochodnych.

Można zadeklarować klasy dziedziczącej bez specyfikatora dostępu klasa bazowa.W takim przypadku wyprowadzenie uważa się za prywatne, jeśli używa się deklarację klasy pochodne klasy słowa kluczowego.Wyprowadzenie uznaje się publicznie, jeśli używa w deklaracji klasy pochodne struct słowa kluczowego.Na przykład poniższy kod:

class Derived : Base
...

jest równa:

class Derived : private Base
...

Podobnie następujący kod:

struct Derived : Base
...

jest równa:

struct Derived : public Base
...

Uwaga członków zadeklarowanych jako posiadające prywatny dostęp nie są dostępne dla funkcji lub klasy pochodne, chyba że te funkcje lub klasy zadeklarowane za pomocą friend deklaracji w klasie podstawowej.

A Unii typu nie może mieć klasy podstawowej.

[!UWAGA]

Podczas określania prywatnych klasy podstawowej, zaleca się jawne używanie private słowa kluczowego, więc użytkownicy w klasie pochodnej zrozumieć członek access.

Zobacz też

Informacje

Kontrola dostępu Członkowskie