Šioje pamokoje su pavyzdžių pagalba sužinosime apie C ++ klasių prieigos modifikatorius. C ++ prieigos modifikatoriai yra vieši, privatūs ir saugomi.
Vienas iš pagrindinių objektinio programavimo kalbų, tokių kaip C ++, bruožų yra duomenų slėpimas .
Duomenų slėpimas reiškia prieigos apribojimą klasės duomenų nariams. Taip siekiama užkirsti kelią kitoms funkcijoms ir klasėms klastoti klasės duomenis.
Tačiau taip pat svarbu padaryti kai kurių narių funkcijas ir narių duomenis prieinamus, kad paslėptus duomenis būtų galima valdyti netiesiogiai.
C ++ prieigos modifikatoriai leidžia mums nustatyti, kurie klasės nariai yra prieinami kitoms klasėms ir funkcijoms, o kurie ne.
Pavyzdžiui,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Čia kintamieji „patientNumber“ ir Patient
klasės diagnozė paslėpti naudojant private
raktinį žodį, o narių funkcijos pasiekiamos naudojant public
raktinį žodį.
C ++ prieigos modifikatorių tipai
C ++ versijoje yra 3 prieigos modifikatoriai:
public
private
protected
viešosios prieigos modifikatorius
public
Raktažodis naudojamas sukurti visuomenės nariams (duomenys ir funkcijos).- Su visuomenės nariais galima susipažinti bet kurioje programos dalyje.
1 pavyzdys: C ++ viešosios prieigos modifikatorius
#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; )
Išvestis:
Įveskite savo amžių: 20 Amžius = 20
Šioje programoje sukūrėme klasę pavadinimu Sample
, kurioje yra public
kintamas amžius ir public
funkcija displayAge()
.
Be main()
, mes sukūrėme objekto Sample
klasės pavadintas obj1. Tada mes prieiname prie viešųjų elementų tiesiogiai naudodami kodus obj.age
ir obj.displayAge()
.
privatus prieigos modifikatorius
private
Raktažodis naudojamas kurti asmeninius nariai (duomenys ir funkcijos).- Prie privačių narių galima prisijungti tik iš klasės.
- Tačiau draugų klasės ir draugo funkcijos gali pasiekti privačius narius.
2 pavyzdys: „C ++“ privačios prieigos specifikatorius
#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; )
Išvestis:
Įveskite savo amžių: 20 Amžius = 20
Be main()
, objektas obj1 negali tiesiogiai prieiti prie klasės kintamąjį amžių.
// error cin>> obj1.age;
Mes galime netiesiogiai manipuliuoti amžiumi naudodamiesi viešąja funkcija displayAge()
, nes ši funkcija priskiria amžių į jį perduotam argumentui, ty funkcijos parametrui int a
.
apsaugotas prieigos modifikatorius
Prieš sužinodami apie protected
prieigos specifikatorių, įsitikinkite, kad žinote apie paveldėjimą C ++.
protected
Raktažodis naudojamas sukurti apsaugotus prisijungę (duomenys ir funkcijos).- Su saugomais nariais galima susipažinti klasėje ir išvestinės klasės.
3 pavyzdys: C ++ apsaugotas prieigos specifikatorius
#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; )
Išvestis:
Įveskite savo amžių: 20 Amžius = 20
Čia ChildSample
yra paveldima klasė, iš kurios kilusi Sample
. Kintamasis amžius deklaruojamos Sample
su protected
raktažodžiu.
Tai reiškia, kad jis ChildSample
gali pasiekti amžių, nes Sample
yra jo tėvų klasė.
Mes tai matome priskyrę amžiaus vertę, ChildSample
nors amžius deklaruojamas Sample
klasėje.
Santrauka: vieša, privati ir saugoma
public
elementus gali pasiekti visos kitos klasės ir funkcijos.private
prie elementų negalima naudotis ne pagal klasę, kurioje jie deklaruoti, išskyrusfriend
klases ir funkcijas.protected
elementai yra tokie patys kaipprivate
, išskyrus tuos atvejus, kai juos gali pasiekti išvestinės klasės.
Specifikatoriai | Ta pati klasė | Išvestinė klasė | Už klasės ribų |
---|---|---|---|
public | Taip | Taip | Taip |
private | Taip | Ne | Ne |
protected | Taip | Taip | Ne |
Pastaba: Pagal numatytuosius nustatymus C ++ klasės nariai yra private
, nebent nurodyta kitaip.