Mis vahe on C++ klasside era- ja kaitstud liikmetel?

Mis Vahe On C Klasside Era Ja Kaitstud Liikmetel



C++ on objektorienteeritud programmeerimiskeel (OOP), mis pakub mehhanismi andmete ja funktsioonide kapseldamiseks üheks üksuseks, mida nimetatakse klassiks. Klassi üks olulisi omadusi on võimalus määrata oma liikmete juurdepääsutase. Objektorienteeritud programmeerimises juurdepääsu spetsifikaadid kasutatakse klassi väljade ja meetodite nähtavuse ja juurdepääsetavuse kontrollimiseks. Kaitstud , avalik ja privaatne juurdepääsutasemed on C++ kolm peamist juurdepääsutaseme tüüpi.

Selles kirjutises käsitleme nende kahe peamise erinevust juurdepääsu täpsustaja s, privaatne ja kaitstud C++ klassi liikmed.

Privaatjuurdepääsu täpsustaja

Eraliikmed on deklareeritud kasutades märksõna ' privaatne ‘. The privaatjuurdepääsu määraja piirab klassiliikmete juurdepääsu ainult klassile endale. Klassiväline kood ei saa privaatliikmele juurde pääseda ega seda muuta. See tähendab, et ainult klassis deklareeritud meetodid saavad juurdepääsu ja sellega töötada eraliikmed , isegi tuletatud klassid ei pääse juurde eraliikmed . Levinud kasutusala eraliikmed on tagada klassi korrektne toimimine. Eraliikmed kasutatakse klassi andmete kapseldamiseks ja klassi kasutajatele abstraktsioonitaseme pakkumiseks.







#include
kasutades nimeruum std ;

klass mängija {

privaatne :
stringi nimi ;
int vanus ;

avalik :
tühine getPlayer ( )
{
cout << 'Sisesta nimi:' ;
söömine >> nimi ;
cout << 'Sisestage vanus:' ;
söömine >> vanus ;
}
tühine showPlayer ( )
{
cout << 'Nimi:' << nimi << endl ;
cout << 'Vanus:' << vanus << endl ;
}
} ;

int peamine ( )
{
mängija pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

tagasi 0 ;
}

Ülaltoodud koodis kasutame avaliku liikme meetodeid getPlayer() ja showPlayer() neile kahele ligi pääseda privaatne liikmed nimi ja vanus . The getPlayer() funktsioon saab kasutajatelt sisendi ja kuvab selle kaudu ekraanil showPlayer() funktsiooni.



Väljund







Kaitstud juurdepääsu täpsustaja

Kaitstud liikmed klassile pääsevad juurde nii tuletatud klassid kui ka klassi enda liikmefunktsioonid. Kaitstud liikmed kasutatakse tuletatud klassidele juurdepääsu pakkumiseks, ilma juurutamise üksikasju välismaailmale paljastamata. Kaitstud liikmed on deklareeritud kasutades märksõna ' kaitstud ' ja käärsool (:) iseloomu. Kaitstud liikmed võimaldavad klassi laiendada ja muuta, ilma et see kahjustaks selle terviklikkust. Tuletatud klass võib kasutada kaitstud liikmed baasklassi käitumise täpsustamiseks või kohandamiseks.

Siin on näide klassist kaitstud liikmed :



#include
kasutades nimeruumi std;

klassi mängija {
privaatne:
stringi nimi;
int vanus;

kaitstud:
int eesmärgid;

avalik:
tühine getPlayer ( )
{
cout <> nimi;
cout <> vanus;
}
tühi showPlayer ( )
{
cout << 'Nimi:' << nimi << endl;
cout << 'Vanus:' << vanus << endl;
}
} ;

klassi mängija1 : avalik mängija {

privaatne:
string riik;

avalik:
tühised seatud_eesmärgid ( int g )
{
eesmärgid = g;
}
tühine getPlayer1 ( )
{
getPlayer ( ) ;
cout <> riik;
}
tühi showPlayer1 ( )
{
cout << 'eesmärgid:' << eesmärgid << endl;
showPlayer ( ) ;
cout << 'Riik: ' << riik << endl;
}
} ;

int main ( )
{
mängija1 pl;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

tagasi 0 ;
}

The mängija klass koosneb kahest eraliikmed , nimi ja vanus , üks kaitstud liige, eesmärgid ja privaatne liikmeid kasutatakse sees avalik liikme funktsioonid, getPlayer() ja showPlayer() . Seal on kaks klassi, mängija ja mängija 1 , mis mõlemad on baasklassid. Üks privaatne liige, riik , ja kolm avalik liikme meetodid moodustavad mängija 1 klass. Määra_eesmärgid() kasutatakse kaitstud liikme muutmiseks eesmärgid' väärtus. getPlayer1() kutsub üles getPlayer() liikme funktsioon mängija klassis, hankides samal ajal lisaks riigi sisendi. Sarnaselt sellele, showPlayer1() kutsub üles showPlayer() liige funktsiooni ja prindib eesmärgid ja riik väärtused.

Väljund

Erinevus C++ klassi era- ja kaitstud liikmete vahel

Siin on loetletud mõned peamised erinevused Privaatne ja Kaitstud C++ klasside liikmed.

1: ulatus ja funktsionaalsus

Juurdepääsuspetsifikaatorite kasutamise kaalumisel on ülioluline hoolikalt läbi mõelda ulatus ja funktsionaalsus programmist. A privaatjuurdepääsu määraja tagab kõrgeima turbetaseme ja väldib tahtmatut juurdepääsu muutujatele ja meetoditele. Teisest küljest a kaitstud juurdepääsu määraja pakub laiaulatuslikumat juurdepääsu ja paindlikkust, mis on oluline, kui plaanite pärida tuletatud klassid baasklassist.

2: juurdepääsutase

Peamine erinevus privaatne ja kaitstud liikmed on nende pakutav juurdepääsu tase. Kaitstud liikmed võivad olla juurdepääsetavad nii klassi tuletatud klasside kui ka liikmefunktsioonide kaudu, kuid privaatne liikmeid saab hankida ainult klassi liikmefunktsioonide kaudu.

3: klassi kapseldus

Veel üks oluline erinevus privaatne ja kaitstud liikmed on nende roll klassi kapseldumise säilitamisel. Andmete eraldamiseks ja klassi kasutajatele teatud abstraktsioonitaseme pakkumiseks privaatne liikmed töötavad. Kaitstud liikmeid kasutatakse pärimisstruktuuri haldamiseks ja tuletatud klasside baasklassi liikmetele juurdepääsu pakkumiseks.

Viimased mõtted

Privaatne ja kaitstud liikmed on kaks olulist juurdepääsutaset C++ klassis. The privaatne juurdepääsu täpsustaja muudab klassi liikmed kõigile välistele kasutajatele kättesaamatuks ja seda kasutatakse teabe säilitamiseks privaatne klassi sees. Seevastu a kaitstud juurdepääsu spetsifikaator võimaldab juurdepääsu klassi liikmetele ainult tuletatud klasside kaudu, seda kasutatakse põhiklassi funktsionaalsuse pakkumiseks ja võimaldab muuta põhiklassi käitumist muutmata. Klassi liikmete juurdepääsutase mängib üliolulist rolli klassi kapseldamise säilitamisel ja klassi kasutajatele juurdepääsutaseme tagamisel.