C ++

C ++ specifikacije pristupa

C ++ specifikacije pristupa
U C ++, klasa je skup varijabli i funkcija koje su konfigurirane za zajednički rad. Kada se varijablama klase daju vrijednosti, dobiva se objekt. Objekt ima iste varijable i funkcije kao i klasa, ali ovaj put varijable imaju vrijednosti. Iz jedne klase može se stvoriti mnogo objekata. Jedan se objekt razlikuje od drugog objekta prema različitom skupu vrijednosti dodijeljenim varijablama drugog objekta. Stvaranje objekta iz klase kaže se kao instanciranje objekta. Čak i ako dva različita objekta imaju iste vrijednosti za svoje varijable, ti su objekti različiti entiteti, prepoznati pod različitim imenima u programu. Varijable za objekt i odgovarajuću klasu nazivaju se članovima podataka. Funkcije objekta i odgovarajuće klase nazivaju se funkcijama člana. Članovi podataka i funkcije članova nazivaju se članovima.

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

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:

#include
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<// int no1 = obj.num1;
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:

razred TheCla

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:

#include
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<int br2 = dijeteObj.metoda2 ();
cout<return 0;

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 TheCla

Sada 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:

razred ChildCla: zaštićen TheCla

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:

razred ChildCla: privatni TheCla

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:

#include
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</ * int br2 = dijeteObj.metoda2 ();
cout<return 0;

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:

razred ChildCla: zaštićen TheCla

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:

razred ChildCla: privatni TheCla

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:

razred ChildCla: javni TheCla

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:

razred ChildCla: zaštićen TheCla

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:

razred ChildCla: privatni TheCla

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
Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...