Riječ pristup znači čitati ili mijenjati vrijednost varijable, a znači i koristiti funkciju. C ++ specifikatori pristupa su riječi "privatno", "zaštićeno" i "javno"."Oni odlučuju može li član pristupiti drugim članovima svoje klase ili funkcija ili operator izvan klase koji ne pripada klasi može pristupiti bilo kojem članu klase. Oni također odlučuju može li član izvedene (podređene) klase pristupiti članu roditeljske klase.
Za razumijevanje ovog članka i testiranje navedenog koda potrebno je osnovno znanje jezika C ++.
Sadržaj članka
- Javne i privatne specifikacije
- Zaštićeni specifikator
- Izvedene specifikacije klase i specifikacije članova
- Zaključak
Javne i privatne specifikacije
Razred
Bilo koji član klase može pristupiti bilo kojem drugom članu te iste klase, neovisno o tome koji je označen kao "javni" ili "privatni".”Razmotrite sljedeći program:
pomoću prostora imena std;
razred TheCla
privatni:
int num1;
int num2;
javnost:
TheCla (int n1, int n2)
num1 = n1; num2 = n2;
metoda int ()
povratak num1;
;
int main ()
TheCla obj (10, 20);
int br2 = obj.metoda ();
cout<
return 0;
Izlaz je 10. Privatni članovi su num1 i num2. Članovi javnosti su TheCla () i method (). Imajte na umu da je TheCla () funkcija konstruktora koja inicijalizira varijable od interesa. Područje specifikatora pristupa započinje od njegove oznake do kraja opisa klase (definicije) ili do početka drugog specifikatora pristupa.
U funkciji main () prvi je izraz instancija koja uključuje funkciju konstruktora, koja inicijalizira num1 i num2. Sljedeća izjava poziva javnog člana, metodu (), klase.
Sada, u opisu klase (definiciji), javna funkcija člana, TheCla (), pristupa privatnim članovima, num1 i num2. Također, javna funkcija člana, metoda (), pristupa privatnom članu, num1. Bilo koji član unutar opisa klase može pristupiti bilo kojem drugom članu unutar istog opisa klase; nije važno koji je član privatni ili javni.
Međutim, funkcija ili operator koji nisu deklarirani u opisu klase i izvan opisa klase mogu pristupiti samo javnim članovima klase. Na primjer, glavna () funkcija je funkcija deklarirana izvan opisa klase. Mogao je pristupiti samo članovima metode () i TheCla (). Unutar glavne () funkcije, funkcija TheCla () je obj (10, 20).
Vanjska funkcija ili vanjski operator, kao što je glavna () funkcija, ne može pristupiti niti jednom privatnom članu klase, poput num1 ili num2. Uklonite indikator komentara, //, iz posljednje izjave u main (). Ako pokušavate kompajlirati program, imajte na umu da se program neće kompajlirati, dajući poruku o pogrešci.
Zadani specifikator
Zadani je specifikator za klasu „private.”Dakle, gornji opis klase jednak je sljedećem opisu, privatan, ali bez specifikatora:
int num1;
int num2;
javnost:
TheCla (int n1, int n2)
num1 = n1; num2 = n2;
metoda int ()
povratak num1;
;
Bilješka: oznaka specifikatora pristupa započinje specifikatorom, a zatim slijedi dvotačka.
Zaštićeni specifikator
Unutar opisa klase i iz vanjske funkcije ili izvan operatora, zaštićeni specifikator je isti kao i privatni specifikator. Sada zamijenite privatni specifikator u gore navedenom programu s specifikatorom, zaštitite i uklonite indikator komentara, //, iz posljednjeg ali jednog izjava u funkciji main (). Ako pokušavate kompajlirati program, imajte na umu da se program neće kompajlirati, dajući poruku o pogrešci.
Problem sa zaštićenim specifikatorom pojavljuje se kada članovi izvedene (naslijeđene) klase moraju pristupiti članovima osnovne (roditeljske) klase.
Javna izvedena klasa s javnim članovima
Razmotrite sljedeći program:
pomoću prostora imena std;
razred TheCla
javnost:
int num1 = 10;
zaštićen:
int broj2 = 20;
privatni:
int broj3 = 30;
;
razred ChildCla: javni TheCla
javnost:
int metoda1 ()
povratak num1;
int metoda2 ()
povratak num2;
/ * int metoda3 ()
povratak num3;
* /
;
int main ()
ChildCla childObj;
int br1 = dijeteObj.metoda1 ();
cout<
cout<
Izlaz je:
10
20
U osnovnoj klasi num1 je javni, num2 je zaštićen, a num3 je privatan. U izvedenoj klasi sve su funkcije člana javne. Prva funkcija, method1 (), pristupa članu javnih podataka, num1. Druga funkcija, method2 (), pristupa zaštićenom članu podataka, num2. Treća funkcija, method3 (), iako je trenutno prokomentirana, trebala bi pristupiti članu privatnih podataka, num3.
Izvedena klasa nije deklarirana bez specifikatora pristupa (javni, zaštićeni ili privatni). Iznad je izvedena klasa deklarirana s javnim specifikatorom, to jest:
razred ChildCla: javni TheClaSada uklonite komentar iz definicije funkcije trećeg člana u izvedenoj klasi. Ako pokušavate kompajlirati program, imajte na umu da se neće prevesti, dajući poruku o pogrešci.
Bilješka: Kada se cijela izvedena klasa proglasi javnom, njezini članovi ne mogu pristupiti privatnim članovima osnovne klase. Međutim, njezini članovi mogu pristupiti javnosti i zaštićenim pripadnicima osnovne klase. Gornji program to ilustrira.
Međutim, imajte na umu da javni član javne izvedene klase može pristupiti zaštićenom članu osnovne klase.
Izvedene specifikacije klase i specifikacije članova
Zaštićeni izvedeni razred s javnim članovima
Zamijenite "javni" specifikator sa "zaštićen" u gornjoj deklaraciji izvedene klase, kako slijedi:
Sastavite i pokrenite program i imajte na umu da je rezultat isti kao i prije.
Dakle, kada se cijela izvedena klasa proglasi zaštićenom, njezini članovi ne mogu pristupiti privatnim članovima osnovne klase. Međutim, njezini članovi mogu pristupiti javnosti i zaštićenim pripadnicima osnovne klase. To je isto kao kad je izvedena klasa proglašena javnom.
Bilješka: zaštićeni član javne izvedene klase može pristupiti zaštićenom članu osnovne klase.
Privatni izvedeni tečaj s javnim članovima
Zamijenite "zaštićeni" specifikator s "private" u gornjoj deklaraciji izvedene klase, kako slijedi:
Sastavite i pokrenite program i imajte na umu da je rezultat isti kao i prije.
Dakle, kada se cijela izvedena klasa proglasi privatnom, njezini članovi ne mogu pristupiti privatnim članovima osnovne klase. Međutim, njezini članovi mogu pristupiti javnosti i zaštićenim pripadnicima osnovne klase. To je isto kao kad je izvedena klasa proglašena zaštićenom ili javnom.
Javni izvedeni tečaj sa zaštićenim članovima
Upišite, kompajlirajte i pokrenite sljedeći program u kojem je zaštićena cijela izvedena klasa i njezini članovi. Neki su segmenti koda sljedeći:
pomoću prostora imena std;
razred TheCla
javnost:
int num1 = 10;
zaštićen:
int broj2 = 20;
privatni:
int broj3 = 30;
;
razred ChildCla: javni TheCla
zaštićen:
int metoda1 ()
povratak num1;
int metoda2 ()
povratak num2;
/ * int metoda3 ()
povratak num3;
* /
;
int main ()
/ * ChildCla childObj;
int br1 = dijeteObj.metoda1 ();
cout<
cout<
Program radi takav kakav je. Ne postoji izlaz, a ne bi trebao postojati niti jedan izlaz, na temelju načina na koji je program upisan.
Sada uklonite komentar iz definicije funkcije, method3 (), u izvedenoj klasi. Ako pokušavate kompajlirati program, imajte na umu da se neće prevesti, dajući poruku o pogrešci. To znači da privatnom članu nije moguće pristupiti iz vanjske funkcije, vanjskog operatora ili izvedene klase. To je isti zaključak kao i gore zaključen, koji se odnosi na pristup privatnom članu.
Bilješka: zaštićeni član zaštićene izvedene klase može pristupiti zaštićenom članu osnovne klase.
Sada vratite komentare u izvedenu klasu i poništite komentar prvog segmenta koda u funkciji main (). Ako pokušavate kompajlirati program, imajte na umu da se program neće kompajlirati zbog prvog segmenta koda u funkciji main (). Ovaj efekt nije nov. Osim izvedene klase, vanjskih funkcija i vanjskih operatora, zaštićeni i privatni članovi (osnovne ili izvedene) klase istog su specifikatora, private. Funkcija main () vidi zaštićeni član bilo koje klase, bilo da je osnovna ili izvedena, kao isti specifikator, privatna i zabranjen joj je pristup.
Ako je drugi segment koda funkcije main () bez komentara, primijenit će se isto objašnjenje. To jest, glavna () funkcija neće moći pristupiti zaštićenom ili privatnom članu izvedene klase ili osnovne klase. To je neovisno o tome može li zaštićeni član izvedene klase pristupiti zaštićenom članu osnovne klase.
Zaštićeni izvedeni razred sa zaštićenim članovima
Zamijenite "javni" specifikator sa "zaštićen" u gornjoj deklaraciji izvedene klase, kako slijedi:
Vratite komentar segmenata koda natrag u funkciju main (), ako to već nije učinjeno. Sastavite i pokrenite program i imajte na umu da je rezultat kao prije.
Privatni izvedeni tečaj sa zaštićenim članovima
Zamijenite "zaštićeni" specifikator s "private" u gornjoj deklaraciji izvedene klase, kako slijedi:
Sastavite i pokrenite program i imajte na umu da će rezultat biti kao prije.
Javni izvedeni tečaj s privatnim članovima
Zamijenite "private" specifikator s "public" u deklaraciji izvedene klase gore, kako slijedi:
Neka članovi izvedene klase postanu privatni. Sastavite i pokrenite program. Rezultat se ne razlikuje od slučaja „Javno izvedena klasa sa zaštićenim članovima“.
Zaštićeni izvedeni razred s privatnim članovima
Zamijenite "javni" specifikator sa "zaštićen" u gornjoj deklaraciji izvedene klase, kako slijedi:
Sastavite i pokrenite program. Ovaj se rezultat ne razlikuje od slučaja "Zaštićeni izvedeni razred sa zaštićenim članovima".
Privatni izvedeni tečaj s privatnim članovima
Zamijenite "zaštićeni" specifikator s "private" u gornjoj deklaraciji izvedene klase, kako slijedi:
Sastavite i pokrenite program. Ovaj se rezultat ne razlikuje od slučaja „Privatno izvedeni razred sa zaštićenim članovima“.
Zaključak
C ++ specifikatori pristupa su riječi "privatno", "zaštićeno" i "javno".”Oni odlučuju o pristupu članovima razreda. Područje specifikatora pristupa započinje od njegove oznake, do kraja opisa klase (definicije) ili do početka drugog specifikatora pristupa. Bilo koji član klase može pristupiti bilo kojem drugom članu te iste klase. Privatnom članu klase ne može pristupiti niti jedna vanjska funkcija, niti jedan vanjski operator ili izvedena klasa.
Član osnovne klase mora biti zaštićen kako bi član izvedene klase mogao pristupiti privatnom članu osnovne klase. Ovaj zaštićeni član osnovne klase vanjska funkcija ili vanjski operator vidi kao privatni član osnovne klase.
Javnom članu klase može pristupiti bilo koja vanjska funkcija, bilo koji vanjski operator ili izvedena klasa.
U nedostatku bilo kakvog specifikatora pristupa u klasi, pretpostavlja se privatni specifikator. Odnosno, zadani specifikator pristupa je private.
Reference korištene u ovom radu
- Alireza Ebrahimi, NASLJEĐIVANJE: PONOVNA UPORABNOST I PROŠIRIVOST
- S. Malik, Strukture podataka korištenjem C ++ 2. izdanje