Sdílet prostřednictvím


Specifikátory přístupu pro základní třídy

Řízení dva faktory, které členy základní třídy jsou přístupné v odvozené třídě; Tyto faktory stejné řízení přístupu k zděděné členy v odvozené třídě:

  • Zda prohlašuje pomocí základní třídy odvozené třídy veřejné specifikátor v přístupu třídy hlavy (třídy hlavy je popsána v části gramatiky v Definování typů třídy).

  • Přístup k členu Novinky v základní třídě.

Následující tabulka zobrazuje interakce mezi těmito faktory a určení člen třídy base přístup.

Člen přístup v základní třídě.

private

protected

Veřejné

Bez ohledu na přístup k odvození vždy nepřístupná.

V odvozené třídě, pokud používáte soukromé odvození soukromé

V odvozené třídě, pokud používáte soukromé odvození soukromé

 

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

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

 

Chráněné v odvozené třídě, pokud používáte veřejný odvození

V odvozené třídě, pokud používáte veřejný odvození

To ukazuje 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 DerivedClass1, členské funkce PublicFunc je veřejný člen a ProtectedFunc je chráněný člen, protože BaseClass je veřejné základní třídy.PrivateFuncsoukromý BaseClass, a je přístupné pro všechny odvozené třídy.

V DerivedClass2, funkce PublicFunc a ProtectedFunc jsou považovány za soukromé členy protože BaseClass je soukromé základní třídy.Znovu PrivateFunc soukromý BaseClass, a je přístupné pro všechny odvozené třídy.

Můžete deklarovat odvozené třídy bez specifikátor přístupu základní třída.V takovém případě je odvození považovány za soukromé, pokud používá deklaraci třídy odvozené třídy klíčové slovo.Odvození považovány za veřejné prohlášení odvozené třídy používá-li struct klíčové slovo.Například následující kód:

class Derived : Base
...

je ekvivalentní:

class Derived : private Base
...

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

struct Derived : Base
...

je ekvivalentní:

struct Derived : public Base
...

Jako soukromý přístup členové nejsou přístupné funkce nebo pokud tyto funkce nebo třídy jsou deklarovány pomocí odvozených tříd friend prohlášení v základní třídě.

A unie typu nemůže mít základní třídu.

[!POZNÁMKA]

Při určování soukromé základní třídy je vhodné výslovně použít private klíčové slovo tak uživatelům odvozené třídy pochopit přístup členských.

Viz také

Referenční dokumentace

Řízení přístupu členských