C ++ tilgangsmodifikatorer

I denne opplæringen vil vi lære om tilgangsmodifikatorer for C ++ - klasser ved hjelp av eksempler. Tilgangsmodifikatorene til C ++ er offentlige, private og beskyttede.

En av hovedtrekkene til objektorienterte programmeringsspråk som C ++ er datahulling .

Data skjuler refererer til å begrense tilgangen til data medlemmer av en klasse. Dette er for å forhindre at andre funksjoner og klasser tukler med klassedataene.

Det er imidlertid også viktig å gjøre noen medlemsfunksjoner og medlemsdata tilgjengelige slik at de skjulte dataene kan manipuleres indirekte.

Tilgangsmodifikatorene til C ++ lar oss bestemme hvilke klassemedlemmer som er tilgjengelige for andre klasser og funksjoner, og hvilke som ikke er det.

For eksempel,

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

Her blir variablene pasientnummer og diagnose av Patientklassen skjult ved hjelp av privatenøkkelordet, mens medlemsfunksjonene blir gjort tilgjengelige ved hjelp av publicnøkkelordet.

Typer C ++ tilgangsmodifikatorer

I C ++ er det 3 tilgangsmodifikatorer:

  • public
  • private
  • protected

offentlig tilgangsmodifikator

  • Den publicnøkkelordet brukes til å opprette offentlige medlemmer (data og funksjoner).
  • De offentlige medlemmene er tilgjengelige fra hvilken som helst del av 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; )

Produksjon:

 Skriv inn din alder: 20 Alder = 20

I dette programmet har vi opprettet en klasse med navnet Sample, som inneholder en publicvariabel alder og en publicfunksjon displayAge().

I main()har vi opprettet et objekt av Sampleklassen som heter obj1. Vi får deretter tilgang til de offentlige elementene direkte ved å bruke kodene obj.ageog obj.displayAge().

privat tilgangsmodifikator

  • Den privatenøkkelordet brukes til å opprette private medlemmer (data og funksjoner).
  • De private medlemmene er kun tilgjengelige fra klassen.
  • Imidlertid kan venneklasser og vennefunksjoner få tilgang til private medlemmer.

Eksempel 2: C ++ privat tilgangsspesifikator

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

Produksjon:

 Skriv inn din alder: 20 Alder = 20

I main(), objektet obj1 kan ikke direkte få tilgang til klassevariabelen alder.

 // error cin>> obj1.age;

Vi kan bare indirekte manipulere alder gjennom den offentlige funksjonen displayAge(), siden denne funksjonen tilordner alder til argumentet som sendes inn i den, dvs. funksjonsparameteren int a.

beskyttet Access Modifier

Før vi lærer om protectedtilgangsspesifikatoren, må du sørge for at du vet om arv i C ++.

  • Den protectednøkkelordet brukes til å lage beskyttede elementer (data og funksjons).
  • De beskyttede medlemmene er tilgjengelige i klassen og fra den avledede klassen.

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

Produksjon:

 Skriv inn din alder: 20 Alder = 20

Her ChildSampleer en arvelig klasse som er avledet fra Sample. Variabel alder er angitt Samplemed protectednøkkelordet.

Dette betyr at ChildSampletilgang til alder siden Sampleer den overordnede klassen.

Vi ser dette da vi har tildelt verdien av alder i ChildSampleselv om alder er oppgitt i Sampleklassen.

Sammendrag: offentlig, privat og beskyttet

  • public elementer kan nås av alle andre klasser og funksjoner.
  • privateelementene er ikke tilgjengelige utenfor klassen de er deklarert i, bortsett fra av friendklasser og funksjoner.
  • protectedelementene er akkurat som private, bortsett fra at de kan nås av avledede klasser.
Spesifikatorer Samme klasse Avledet klasse Utenfor klassen
public Ja Ja Ja
private Ja Nei Nei
protected Ja Ja Nei

Merk: Som standard er klassemedlemmer i C ++ private, med mindre annet er spesifisert.

Interessante artikler...