Soovitatav, 2020

Toimetaja Valik

Era- ja kaitstud erinevus C ++-s

Andmete peitmiseks on C ++ programmeerimiskeeles määratletud kolm tüüpi juurdepääsu kaitse. Andmete peitmine on objektorienteeritud programmeerimise oluline osa. Privaatsed ja kaitstud märksõnad pakuvad juurdepääsu tagamise taset, et varjata klassi andmeid ja funktsioone. Privaatseid liikmeid ei saa pärida, kui kaitstud liige saab pärida vaid piiratud ulatuses. Need spetsifikatsioonid näitavad nende liikmete nähtavust, kus eraõiguslikud on kaitstud piirangud.

Võrdluskaart

Võrdluse alusEraldiKaitstud
Pärandklassi pärandvara
Tuletatud klass ei pääse põhiklassi eraliikmetele.Tuletatud klass saab juurdepääsu põhiklassi kaitstud liikmetele.
Kättesaadavus
Klasside erasektori liikmed ei ole klassiruumist väljapoole kättesaadavad.Klassi kaitstud liikmed ei ole klassiruumist väljapoole ligipääsetavad, välja arvatud kohe saadud klass.
Saadaval oma klassistJahJah
Saadaval tuletatud klassistEiJah
Juurdepääs väljastpooltEiEi

Eraelu määratlus

Eraklassi kuuluvaid klassi liikmeid saab ainult klassis alla laadida. Teisisõnu, klassi eriosas deklareeritud liikmeid saavad kasutada ainult klassi sõberfunktsioon ja liikme funktsioon. Eraldi liikmed ei ole saadud tuletatud klassi jaoks otseselt kättesaadavad ja nad ei ole klassiruumis kättesaadavad.

C ++ programm näitab privaatsete juurdepääsu spetsifikatsioonide kontseptsiooni.

 #kasuta nimeruumi std; klass A {private: int i; avalik: void get () {cout <> i; }}; klass B: public A {public: void show () {i ++; cout << "i Teie sisestatud number pärast incrementcpp"> sisaldab ka nimeruumi std; klassi imetaja {public: void mammalMethod (void) {cout << "See kuulub imetajate kategooriasse." < 

Ülaltoodud programmis luuakse lapseklassi üks objekt nimega „ob” ja vanemaklassi liikmefunktsioonile pääseb ligi lasteklassi meetodi „marine_mammalMethod” kaudu. Kuigi põhimeetodile ei pääse otse objekti „ob” juurde.

Kaitstud mõiste

Klassis kaitstud klassi liikmed võivad olla ligipääsetavad ainult klassi liikmete funktsiooni ja sõberfunktsiooni kaudu. Neid kaitstud liikmeid ei saa klassi ulatusest välja jätta, välja arvatud lapse klass (kohe sellest tuletatud). See teenib pärandina piiratud eesmärki ja pärandab omadused piiratud viisil.

Allpool toodud C ++ programm illustreerib kaitstud juurdepääsu spetsifikaatide kontseptsiooni.

 #kasuta nimeruumi std; klassi konto1 {kaitstud: int x, y; // tuletatud klassi avalikkusele kättesaadav: tühine komplekt (int a, int b) {x = a; y = b; } void show () {cout < 

Ülaltoodud näites pärib lapseklass põhiklassi omadused, kuna andmesubjektid on avalikud või kaitstud. Ei oleks võimalik, kui x ja y oleksid põhiklassis kuulutatud eraviisilisteks.

Peamised erinevused era- ja kaitstud C + + vahel

  1. Kaitstud märksõna saab kasutada klassi liikmetele, kes on oma klassi privaatsed, kuid mida saab päritud ja tuletatud klassi kasutada. Seevastu ei ole see eraviisilise kasutamise ajal võimalik, sest eraisikuid ei saa päritud klassile otse pärida.
  2. Kui baasklass pärineb privaatset juurdepääsu spetsifikatsiooni kasutades, teeb see baasklassi kõik avalikkuse ja kaitstud liikmed, tuletatud klassi eraõiguslikud liikmed. Vastupidi, see ei ole kaitstud juurdepääsu spetsifikaatorite puhul.

Järeldus

Privaatne ja kaitstud on juurdepääsu spetsifikatsioonid, mida kasutatakse klassi ja selle liikmete nähtavuse määramiseks erinevalt. Kuid kaitstud on paindlikum kui erasektor.

Top