C ++ prieigos modifikatoriai

Š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 Patientklasės diagnozė paslėpti naudojant privateraktinį žodį, o narių funkcijos pasiekiamos naudojant publicraktinį žodį.

C ++ prieigos modifikatorių tipai

C ++ versijoje yra 3 prieigos modifikatoriai:

  • public
  • private
  • protected

viešosios prieigos modifikatorius

  • publicRaktaž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 publickintamas amžius ir publicfunkcija displayAge().

Be main(), mes sukūrėme objekto Sampleklasės pavadintas obj1. Tada mes prieiname prie viešųjų elementų tiesiogiai naudodami kodus obj.ageir obj.displayAge().

privatus prieigos modifikatorius

  • privateRaktaž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 protectedprieigos specifikatorių, įsitikinkite, kad žinote apie paveldėjimą C ++.

  • protectedRaktaž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 ChildSampleyra paveldima klasė, iš kurios kilusi Sample. Kintamasis amžius deklaruojamos Samplesu protectedraktažodžiu.

Tai reiškia, kad jis ChildSamplegali pasiekti amžių, nes Sampleyra jo tėvų klasė.

Mes tai matome priskyrę amžiaus vertę, ChildSamplenors amžius deklaruojamas Sampleklasėje.

Santrauka: vieša, privati ​​ir saugoma

  • public elementus gali pasiekti visos kitos klasės ir funkcijos.
  • privateprie elementų negalima naudotis ne pagal klasę, kurioje jie deklaruoti, išskyrus friendklases ir funkcijas.
  • protectedelementai yra tokie patys kaip private, 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.

Įdomios straipsniai...