Sdílet prostřednictvím


Přístup ke specifikátorům pro třídy Base

Dva faktory určují, které členy základní třídy jsou k dispozici v odvozené třídě. Stejné faktory řídí přístup ke zděděným členům v odvozené třídě:

  • Zda odvozená třída deklaruje základní třídu pomocí specifikátoru přístupu public v hlavičce třídy (hlavička třídy je popsána v části Gramatika v tématu Definice typů tříd).

  • Jaká je přístupnost k členu v základní třídě.

Následující tabulka ukazuje interakci mezi těmito faktory a jak určit přístupnost členů základní třídy.

Přístupnost členů v základní třídě

private

chráněno

Veřejné

Vždy nepřístupný bez ohledu na použitou přístupnost

Soukromý v odvozené třídě při použití soukromého odvození

Soukromý v odvozené třídě při použití soukromého odvození

 

Chráněný v odvozené třídě při použití chráněného odvození

Chráněný v odvozené třídě při použití chráněného odvození

 

Chráněný v odvozené třídě při použití veřejného odvození

Veřejný v odvozené třídě při použití veřejného odvození

Toto dokládá následující příklad:

// 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()
{
}

V třídě DerivedClass1 je členská funkce PublicFunc veřejným členem a funkce ProtectedFunc chráněným členem, protože třída BaseClass je veřejná základní třída.Funkce PrivateFunc je pro třídu BaseClass soukromá a není přístupná žádné odvozené třídě.

V třídě DerivedClass2 jsou funkce PublicFunc a ProtectedFunc považovány za soukromé členy, protože třída BaseClass je soukromá základní třída.Znovu, funkce PrivateFunc je pro třídu BaseClass soukromá a není přístupná žádné odvozené třídě.

Lze deklarovat odvozenou třídu bez specifikátoru přístupu základní třídy.V takovém případě je odvození považováno za soukromé, pokud deklarace odvozené třídy používá klíčové slovo class.Odvození je považováno za veřejné, pokud deklarace odvozené třídy používá klíčové slovo struct.Například následující kód:

class Derived : Base
...

je ekvivalentní s:

class Derived : private Base
...

Podobně následující kód:

struct Derived : Base
...

je ekvivalentní s:

struct Derived : public Base
...

Všimněte si, že členové deklarovaní se soukromou přístupností nejsou funkcím nebo odvozeným třídám přístupní, pokud tyto funkce a třídy nejsou v základní třídě deklarovány pomocí deklarace friend.

Typ sjednocení nemůže mít základní třídu.

[!POZNÁMKA]

Při zadávání soukromé základní třídy je třeba explicitně použít klíčové slovo private, aby uživatelé této odvozené třídy přístup ke členům pochopili.

Viz také

Referenční dokumentace

Ovládací prvek přístupu členů