V tej vadnici bomo s pomočjo primerov spoznali modifikatorje dostopa za razrede C ++. Modifikatorji dostopa za C ++ so javni, zasebni in zaščiteni.
Ena glavnih značilnosti objektno usmerjenih programskih jezikov, kot je C ++, je skrivanje podatkov .
Skrivanje podatkov se nanaša na omejevanje dostopa do podatkovnih članov razreda. To preprečuje, da bi druge funkcije in razredi posegali v podatke razreda.
Vendar pa je tudi pomembno, da nekatere funkcije članov in podatki o članih postanejo dostopni, tako da je mogoče s skritimi podatki manipulirati posredno.
Modifikatorji dostopa C ++ nam omogočajo, da določimo, kateri člani razreda so dostopni drugim razredom in funkcijam in kateri ne.
Na primer
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Tu sta spremenljivki PatientNumber in diagnoza Patient
razreda skriti z uporabo private
ključne besede, medtem ko so funkcije članov dostopne s pomočjo public
ključne besede.
Vrste modifikatorjev dostopa C ++
V C ++ obstajajo 3 modifikatorji dostopa:
public
private
protected
javni modifikator dostopa
- Ključna
public
beseda se uporablja za ustvarjanje javnih članov (podatkov in funkcij). - Člani javnosti so dostopni iz katerega koli dela programa.
Primer 1: Modifikator javnega dostopa C ++
#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; )
Izhod:
Vnesite svojo starost: 20 Starost = 20
V tem programu smo ustvarili razred z imenom Sample
, ki vsebuje public
spremenljivo starost in public
funkcijo displayAge()
.
V letu main()
smo ustvarili objekt Sample
razreda z imenom obj1. Nato do javnih elementov dostopamo neposredno s pomočjo kod obj.age
in obj.displayAge()
.
zasebni modifikator dostopa
- Ključna
private
beseda se uporablja za ustvarjanje zasebnih članov (podatkov in funkcij). - Do zasebnih članov lahko dostopate samo znotraj predavanja.
- Vendar lahko razredi prijateljev in funkcije prijateljev dostopajo do zasebnih članov.
Primer 2: Specifikacija zasebnega dostopa 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; )
Izhod:
Vnesite svojo starost: 20 Starost = 20
V main()
objektu obj1 ni mogoče neposredno dostopati do spremenljivke razreda age.
// error cin>> obj1.age;
S starostjo lahko zgolj posredno manipuliramo z javno funkcijo displayAge()
, saj ta funkcija dodeljuje starost argumentu, ki ji je poslan, tj int a
.
zaščiten modifikator dostopa
Preden se naučimo protected
specifikatorja dostopa, se prepričajte, da veste o dedovanju v C ++.
- Ključna
protected
beseda se uporablja za ustvarjanje zaščitenih članov (podatkov in funkcij). - Do zaščitenih članov je mogoče dostopati znotraj razreda in iz njega pridobljenega razreda.
Primer 3: Specifikator dostopa, zaščiten s 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; )
Izhod:
Vnesite svojo starost: 20 Starost = 20
Tu ChildSample
je podedovan razred, ki izhaja iz Sample
. Spremenljivka starost je navedena Sample
s protected
ključno besedo.
To pomeni, da ChildSample
lahko dostopa do starosti, saj Sample
je njen nadrejeni razred.
To vidimo, saj smo dodelili vrednost starosti, ChildSample
čeprav je starost navedena v Sample
razredu.
Povzetek: javni, zasebni in zaščiteni
public
do elementov lahko dostopajo vsi drugi razredi in funkcije.private
Do elementov ni mogoče dostopati zunaj razreda, v katerem so prijavljeni, razen pofriend
razredih in funkcijah.protected
elementi so takšni kot leprivate
, le da do njih lahko dostopajo izvedeni razredi.
Specifikatorji | Isti razred | Izpeljani razred | Zunanji razred |
---|---|---|---|
public | Da | Da | Da |
private | Da | Ne | Ne |
protected | Da | Da | Ne |
Opomba: Privzeto so člani razreda v jeziku C ++ private
, razen če ni določeno drugače.