Modifikatorji dostopa C ++

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 Patientrazreda skriti z uporabo privateključne besede, medtem ko so funkcije članov dostopne s pomočjo publicključne besede.

Vrste modifikatorjev dostopa C ++

V C ++ obstajajo 3 modifikatorji dostopa:

  • public
  • private
  • protected

javni modifikator dostopa

  • Ključna publicbeseda 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 publicspremenljivo starost in publicfunkcijo displayAge().

V letu main()smo ustvarili objekt Samplerazreda z imenom obj1. Nato do javnih elementov dostopamo neposredno s pomočjo kod obj.agein obj.displayAge().

zasebni modifikator dostopa

  • Ključna privatebeseda 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 protectedspecifikatorja dostopa, se prepričajte, da veste o dedovanju v C ++.

  • Ključna protectedbeseda 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 ChildSampleje podedovan razred, ki izhaja iz Sample. Spremenljivka starost je navedena Samples protectedključno besedo.

To pomeni, da ChildSamplelahko dostopa do starosti, saj Sampleje njen nadrejeni razred.

To vidimo, saj smo dodelili vrednost starosti, ChildSamplečeprav je starost navedena v Samplerazredu.

Povzetek: javni, zasebni in zaščiteni

  • public do elementov lahko dostopajo vsi drugi razredi in funkcije.
  • privateDo elementov ni mogoče dostopati zunaj razreda, v katerem so prijavljeni, razen po friendrazredih in funkcijah.
  • protectedelementi so takšni kot le private, 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.

Zanimive Članki...