Doporučená, 2022

Redakce Choice

Rozdíl mezi privátním a chráněným v C ++

V programovacím jazyce C ++ jsou definovány tři typy ochrany přístupu pro skrytí dat. Ukrývání dat je nezbytnou součástí objektově orientovaného programování. Soukromá a chráněná klíčová slova nabízejí úroveň ochrany přístupu, která skrývá data a funkce v rámci třídy. Soukromí členové nemohou být zděděni, zatímco chráněný člen může být zděděn, ale v omezeném rozsahu. Tyto specifikátory označují viditelnost členů tam, kde je soukromější omezenější než chráněný.

Srovnávací graf

Základ pro srovnáníSoukroméChráněný
Zdědění vlastnosti odvozené třídy
Odvozená třída nemůže přistupovat k soukromým členům základní třídy.Odvozená třída může přistupovat k chráněným členům základní třídy.
Přístupnost
Soukromí členové třídy jsou mimo rozsah třídy nepřístupní.Chráněné členy třídy jsou nepřístupné mimo rozsah třídy kromě třídy odvozené okamžitě.
Přístupné z vlastní třídyAnoAno
Přístupné z odvozené třídyNeAno
Přístupné zvenčíNeNe

Definice soukromé

Členové třídy deklarovaní jako soukromí mohou být načteni pouze ve třídě. Jinými slovy, členové deklarovaní v privátní sekci třídy mohou být zpřístupňováni pouze funkcí kamaráda a členskou funkcí třídy. Soukromí členové nejsou dosažitelní do odvozené třídy přímo a jsou nepřístupní mimo rozsah třídy.

Program C ++ zobrazuje koncept specifikátorů privátního přístupu.

 #include using namespace std; třída A {private: int i; public: void get () {cout <> i; }}; třída B: public A {public: void show () {i ++; cout << "Vaše zadané číslo po incrementcpp"> # obsahuje použití jmenného prostoru std; třída savec {public: void mammalMethod (void) {cout << "To spadá do kategorie savců." < 

Ve výše uvedeném programu je jeden objekt třídy dítěte vytvořen s názvem „ob“ a členská funkce nadřazené třídy může být zpřístupněna prostřednictvím metody volání třídy dítěte „marine_mammalMethod“. Přestože k rodičovské metodě nelze přistupovat přímo s objektem „ob“.

Definice chráněných

Členové třídy deklarovaní jako chránění ve třídě mohou být přístupní pouze prostřednictvím funkce člena a funkce přítele třídy. K těmto chráněným členům nelze přistupovat mimo rozsah třídy s výjimkou podřízené třídy (bezprostředně z ní odvozené). Slouží omezenému účelu v dědictví a omezuje vlastnosti.

Níže uvedený program C ++ ilustruje koncepci chráněných specifikátorů přístupu.

 #include using namespace std; class account1 {protected: int x, y; // přístupné odvozené třídě public: void set (int a, int b) {x = a; y = b; } void show () {cout < 

Ve výše uvedeném příkladu podřízená třída dědí vlastnosti základní třídy, protože členové dat jsou deklarováni jako veřejní nebo chráněni. Nebylo by možné, kdyby x a y byly v základní třídě prohlášeny za soukromé.

Klíčové rozdíly mezi soukromými a chráněnými v jazyce C ++

  1. Chráněné klíčové slovo lze použít k vytvoření členů třídy, které jsou soukromé pro jejich třídu, ale mohou být zděděny a použity odvozenou třídou. To naopak není možné při použití privátní, protože soukromé členy nelze zdědit přímo na odvozenou třídu.
  2. Když je základní třída zděděna pomocí specifikátoru soukromého přístupu, vytvoří všechny veřejné a chráněné členy základní třídy, soukromé členy odvozené třídy. V opačném případě tomu tak není u specifikátorů chráněných přístupů.

Závěr

Soukromé a chráněné jsou specifikátory přístupu, které se používají pro nastavení viditelnosti třídy a jejích členů odlišně. Chráněný je však flexibilnější než soukromý.

Top