U ovom uputstvu uz primjere ćemo naučiti o modifikatorima pristupa za klase C ++. Modifikatori pristupa C ++-a su javni, privatni i zaštićeni.
Jedna od glavnih značajki objektno orijentiranih programskih jezika kao što je C ++ je skrivanje podataka .
Skrivanje podataka odnosi se na ograničavanje pristupa članovima podataka klase. Na ovaj se način sprječava da druge funkcije i razredi neovlašteno mijenjaju podatke klase.
Međutim, također je važno učiniti neke funkcije članova i podacima članova dostupnim kako bi se sa skrivenim podacima moglo neizravno manipulirati.
Modifikatori pristupa C ++-a omogućuju nam da odredimo koji su članovi klase dostupni drugim klasama i funkcijama, a koji ne.
Na primjer,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Ovdje su varijable PatientNumber i dijagnoza Patient
klase skrivene pomoću private
ključne riječi, dok su funkcije člana dostupne pomoću public
ključne riječi.
Vrste modifikatora pristupa C ++
U C ++-u postoje 3 modifikatora pristupa:
public
private
protected
javni pristupni modifikator
public
Ključna riječ se koristi za stvaranje javne članova (podaci i funkcije).- Članovima javnosti dostupan je bilo koji dio programa.
Primjer 1: C ++ modifikator javnog pristupa
#include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )
Izlaz:
Unesite svoju dob: 20 Dob = 20
U ovom smo programu stvorili klasu s imenom Sample
koja sadrži public
promjenjivu dob i public
funkciju displayAge()
.
U main()
, stvorili smo objekt Sample
klase pod nazivom obj1. Tada javnim elementima pristupamo izravno pomoću kodova obj.age
i obj.displayAge()
.
privatni modifikator pristupa
private
Ključna riječ se koristi za stvaranje privatne članova (podaci i funkcije).- Privatnim članovima može se pristupiti samo unutar razreda.
- Međutim, klase prijatelja i funkcije prijatelja mogu pristupiti privatnim članovima.
Primjer 2: Specifikacija privatnog pristupa C ++
#include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )
Izlaz:
Unesite svoju dob: 20 Dob = 20
U main()
, objekt obj1 ne može izravno pristupiti varijabli razreda age.
// error cin>> obj1.age;
Dobom možemo samo neizravno manipulirati putem javne funkcije displayAge()
, jer ova funkcija dodjeljuje dob argumentu koji je u njega proslijeđen, tj int a
. Parametar funkcije .
zaštićeni Modifikator pristupa
Prije nego što naučimo o opisu protected
pristupa, provjerite znate li nasljeđivanje u C ++.
protected
Ključna riječ se koristi za stvaranje zaštićene članova (podaci i funkcije).- Zaštićenim članovima se može pristupiti unutar klase i iz izvedene klase.
Primjer 3: Specifikator pristupa zaštićen C ++
#include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )
Izlaz:
Unesite svoju dob: 20 Dob = 20
Ovdje ChildSample
je naslijeđena klasa koja je izvedena iz Sample
. Varijabla dob deklarira Sample
se protected
ključnom riječi.
To znači da ChildSample
može pristupiti dobi jer Sample
je njena roditeljska klasa.
To vidimo jer smo dodijelili vrijednost dobi ChildSample
iako je dob deklarirana u Sample
klasi.
Sažetak: javno, privatno i zaštićeno
public
elementima mogu pristupiti sve ostale klase i funkcije.private
elementima se ne može pristupiti izvan klase u kojoj su deklarirani, osim pofriend
klasama i funkcijama.protected
elementi su sličniprivate
, osim što im mogu pristupiti izvedene klase.
Specifikatori | Isti razred | Izvedena klasa | Izvan razreda |
---|---|---|---|
public | Da | Da | Da |
private | Da | Ne | Ne |
protected | Da | Da | Ne |
Napomena: Prema zadanim postavkama, članovi klase u C ++ jesu private
, osim ako nije drugačije naznačeno.