C ++ adgangsmodifikatorer

I denne vejledning lærer vi om adgangsmodifikatorer til C ++ - klasser ved hjælp af eksempler. Adgangsmodifikatorerne på C ++ er offentlige, private og beskyttede.

Et af hovedfunktionerne i objektorienterede programmeringssprog som C ++ er dataskydning .

Data gemmer sig henviser til at begrænse adgangen til datamedlemmer i en klasse. Dette er for at forhindre, at andre funktioner og klasser manipulerer med klassedataene.

Det er dog også vigtigt at gøre nogle medlemsfunktioner og medlemsdata tilgængelige, så de skjulte data kan manipuleres indirekte.

Adgangsmodifikatorerne på C ++ giver os mulighed for at bestemme, hvilke klassemedlemmer der er tilgængelige for andre klasser og funktioner, og hvilke der ikke er.

For eksempel,

 class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) ); 

Her skjules variablerne patientNummer og diagnose af Patientklassen ved hjælp af privatenøgleordet, mens medlemsfunktionerne gøres tilgængelige ved hjælp af publicnøgleordet.

Typer af C ++ adgangsmodifikatorer

I C ++ er der 3 adgangsmodifikatorer:

  • public
  • private
  • protected

offentlig adgangsmodifikator

  • Den publicsøgeord bruges til at oprette offentlige medlemmer (data og funktioner).
  • De offentlige medlemmer er tilgængelige fra enhver del af programmet.

Eksempel 1: C ++ public Access Modifier

 #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; )

Produktion:

 Indtast din alder: 20 Alder = 20

I dette program har vi oprettet en klasse med navnet Sample, der indeholder en publicvariabel alder og en publicfunktion displayAge().

I main()har vi oprettet et objekt af Sampleklassen med navnet obj1. Vi får derefter adgang til de offentlige elementer direkte ved hjælp af koderne obj.ageog obj.displayAge().

privat adgangsmodifikator

  • Den privatesøgeord bruges til at oprette private medlemmer (data og funktioner).
  • Der er kun adgang til de private medlemmer inden for klassen.
  • Vensklasser og venfunktioner kan dog få adgang til private medlemmer.

Eksempel 2: C ++ privat adgangsspecifikator

 #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; )

Produktion:

 Indtast din alder: 20 Alder = 20

I main()objektet obj1 kan ikke direkte få adgang til klassens variable alder.

 // error cin>> obj1.age;

Vi kan kun indirekte manipulere alder gennem den offentlige funktion displayAge(), da denne funktion tildeler alder til argumentet, der sendes til den, dvs. funktionsparameteren int a.

beskyttet adgangsmodifikator

Før vi lærer om protectedadgangsspecifikatoren, skal du sørge for at vide om arv i C ++.

  • Den protectedsøgeord bruges til at oprette beskyttede medlemmer (data og funktion).
  • De beskyttede medlemmer kan tilgås inden for klassen og fra den afledte klasse.

Eksempel 3: C ++ beskyttet Access Specifier

 #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; )

Produktion:

 Indtast din alder: 20 Alder = 20

Her ChildSampleer en nedarvet klasse, der er afledt af Sample. Den variable alder er angivet Samplemed protectednøgleordet.

Dette betyder, at der ChildSampleer adgang til alder, da det Sampleer dets overordnede klasse.

Vi ser dette, da vi har tildelt værdien af ​​alder ChildSample, selvom alder er angivet i Sampleklassen.

Resumé: offentlig, privat og beskyttet

  • public elementer kan tilgås af alle andre klasser og funktioner.
  • privateelementer kan ikke tilgås uden for den klasse, hvori de er deklareret, undtagen af friendklasser og funktioner.
  • protectedelementer er ligesom de private, bortset fra at de kan tilgås af afledte klasser.
Specifikatorer Samme klasse Afledt klasse Udenfor klasse
public Ja Ja Ja
private Ja Ingen Ingen
protected Ja Ja Ingen

Bemærk: Som standard er klassemedlemmer i C ++ privatemedmindre andet er angivet.

Interessante artikler...