Odporúčaná, 2019

Redakcia Choice

Rozdiel medzi súkromným a chráneným v C ++

Existujú tri typy ochrany prístupu definované v programovacom jazyku C ++ na skrytie údajov. Skrytie údajov je nevyhnutnou súčasťou objektovo-orientovaného programovania. Súkromné ​​a chránené kľúčové slová ponúkajú úroveň ochrany prístupu na skrytie dát a funkcií v rámci triedy. Súkromní členovia nemôžu byť zdedení, zatiaľ čo chránený člen môže byť zdedený, ale v obmedzenom rozsahu. Tieto špecifikátory označujú viditeľnosť členov, v ktorých je súkromie obmedzujúcejšie než chránené.

Porovnávacia tabuľka

Základ pre porovnanieSúkromnéchránený
Zdedenie majetku na odvodenú triedu
Odvodená trieda nemôže pristupovať k súkromným členom základnej triedy.Odvodená trieda môže pristupovať k chráneným členom základnej triedy.
prístupnosť
Súkromní členovia triedy sú z rozsahu triedy nedostupné.Chránené členovia triedy sú z rozsahu triedy neprístupné s výnimkou okamžitej triedy.
Dostupné z vlastnej triedyÁnoÁno
Prístupný z odvodenej triedyžiadnyÁno
Prístupné zvonkužiadnyžiadny

Definícia súkromného

Členovia tried, ktoré boli vyhlásené za súkromné, je možné získať iba v rámci triedy. Inými slovami, členovia deklarovaní v súkromnej sekcii tejto triedy môžu mať prístup len funkciu priateľa a funkciu člena triedy. Súkromní členovia nemožno získať odvodenej triede priamo a sú z rozsahu triedy nedostupní.

Program C ++ zobrazuje koncepciu špecifikátorov súkromného prístupu.

 # include using namespace std; trieda A {súkromný: int i; verejné: void get () {cout <> i; }}; trieda B: verejná A {public: void show () {i ++; cout << "\ n Zadané číslo po incrementcpp"> # zahŕňa použitie namespace std; trieda cicavcov {public: void mammalMethod (void) {cout << "Patrí do kategórie cicavcov." < 

Vo vyššie uvedenom programe sa vytvorí jeden objekt podradenej triedy s názvom "ob" a členská funkcia materskej triedy sa dá získať prostredníctvom metódy volania detskej triedy "marine_mammalMethod". Napriek tomu nemôže byť prístupová metóda rodičom priamo s objektom "ob".

Definícia chráneného

Členovia tried, ktoré boli vyhlásené za chránené v triede, môžu byť prístupné iba prostredníctvom funkcie člena a priateľskej triedy. Títo chránení členovia nemožno pristupovať mimo rozsah triedy s výnimkou triedy detí (okamžite od nich odvodené). Slúži na obmedzený účel v dedičstve a zdedí vlastnosti obmedzene.

Nasledujúci program C ++ ilustruje koncepciu špecifikátorov chráneného prístupu.

 # include using namespace std; class account1 {chrániť: int x, y; // dostupný pre odvodenú verejnú triedu: void set (int a, int b) {x = a; y = b; } prázdne zobrazenie () {cout < 

Vo vyššie uvedenom príklade detská trieda zdedí vlastnosti základnej triedy, pretože členovia údajov sú deklarovaní ako verejní alebo chránení. Nebolo by možné, keby x a y boli vyhlásené za súkromné ​​v základnej triede.

Kľúčové rozdiely medzi súkromným a chráneným v C ++

  1. Chránené kľúčové slovo sa môže použiť na zostavenie členov triedy, ktoré sú súkromné ​​pre svoju triedu, ale môžu byť zdedené a použité odvodenou triedou. Naopak, toto nie je možné používať pri súkromí, pretože súkromní členovia nemožno zdediť priamo do odvodenej triedy.
  2. Keď sa základná trieda zdedí použitím špeciálneho prístupového špecifikátora, sprístupní všetkým verejným a chráneným členom základnej triedy, súkromným členom odvodenej triedy. Na rozdiel od toho tomu tak nie je v prípade špecifikátorov chráneného prístupu.

záver

Súkromné ​​a chránené sú špecifikátory prístupu, ktoré sa používajú na nastavenie viditeľnosti triedy a jej členov inak. Chránená je však flexibilnejšia ako súkromná.

Top