Recomandat, 2020

Alegerea Editorului

Diferența dintre privat și protejat în C ++

Există trei tipuri de protecție a accesului definite în limbajul de programare C ++ pentru a ascunde datele. Ascunderea datelor este o parte esențială a programării orientate pe obiecte. Cuvintele cheie private și protejate oferă nivelul de protecție a accesului pentru a ascunde datele și funcțiile într-o clasă. Membrii privați nu pot fi moșteniți în timp ce membrul protejat poate fi moștenit, dar într-un interval limitat. Acești indicatori indică vizibilitatea membrilor în care privatul este mai restrictiv decât cel protejat.

Diagramă de comparație

Bazele de comparațiePrivatProtejat
Moștenirea proprietății în clasa derivată
Categoria derivată nu poate accesa membrii privați de clasă de bază.Clasa derivată poate accesa membrii protejați de clasa de bază.
Accesibilitate
Membrii privați ai clasei sunt inaccesibili din domeniul de clasă.Membrii protejați ai clasei sunt inaccesibili din domeniul de clasă, cu excepția clasei derivate imediat.
Accesibil din clasa propriedada
Accesibil din clasa derivatăNuda
Accesibil din exteriorNuNu

Definiția Private

Membrii clasei declarați ca fiind privați pot fi recuperați numai în cadrul clasei. Cu alte cuvinte, membrii declarați în secțiunea privată a clasei pot fi accesați numai de funcția de prieten și funcția de membru a clasei. Membrii privați nu pot fi obținuți direct clasei derivate și sunt inaccesibile din domeniul de aplicare al clasei.

Programul C ++ prezintă conceptul de specificatori de acces privat.

 # include folosind namespace std; clasa A {privat: int i; public: void get () {cout <> i; }}; clasa B: public A {public: void show () {i ++; cout << "\ n Numărul dvs. introdus după incrementcpp"> # include utilizarea spațiului de nume std; mamifer de clasă {public: void mammalMethod (void) {cout << "Este inclus în categoria mamiferelor." < 

În programul de mai sus, un obiect al clasei copil este creat cu numele "ob" iar funcția membră a clasei părinți poate fi accesată prin intermediul metodei clasei copil "marine_mammalMethod". Deși metoda parentală nu poate fi accesată direct cu obiectul "ob".

Definiția Protected

Membrii clasei declarați ca fiind protejați într-o clasă pot fi accesibili numai prin funcția de membru și prin funcția prietenă a clasei. Acești membri protejați nu pot fi accesați din domeniul de clasă, cu excepția clasei copil (derivată imediat din aceasta). Ea servește scopului restrâns în moștenire și moștenește proprietățile într-un mod limitat.

Programul C ++ de mai jos demonstrează conceptul de specificatori de acces protejați.

 # include folosind namespace std; clasa cont1 {protejat: int x, y; // accesibil pentru clasa publica publica: set void (int a, int b) {x = a; y = b; } void show () {cout < 

În exemplul de mai sus, clasa copil moștenește proprietățile clasei de bază deoarece membrii de date sunt declarați publici sau protejați. Nu ar fi posibil ca x și y să fi fost declarate private în clasa de bază.

Diferențe cheie între privat și protejat în C ++

  1. Cuvântul cheie protejat poate fi folosit pentru a construi membri ai clasei care sunt privați pentru clasa lor, dar pot fi mosteniți și utilizați de clasa derivată. Dimpotrivă, acest lucru nu este posibil în timp ce se utilizează privat, deoarece membrii privați nu pot fi moșteniți direct la clasa derivată.
  2. Atunci când clasa de bază este moștenită utilizând specificatorul de acces privat, acesta face ca toți membrii publici și protejați ai clasei de bază, membrii privați ai clasei derivate. În schimb, acest lucru nu se întâmplă în cazul specificatorilor de acces protejați.

Concluzie

Privind și protejați sunt specifici de acces care sunt folosiți pentru a stabili vizibilitatea clasei și a membrilor săi în mod diferit. Cu toate acestea, protejat este mai flexibil decât privat.

Top