C ++ åtkomstmodifierare

I denna handledning lär vi oss om åtkomstmodifierare för C ++ - klasser med hjälp av exempel. Åtkomstmodifierarna för C ++ är offentliga, privata och skyddade.

En av huvudfunktionerna i objektorienterade programmeringsspråk som C ++ är datadöljande .

Döljande av data avser begränsning av åtkomst till datamedlemmar i en klass. Detta för att förhindra att andra funktioner och klasser manipulerar klassdata.

Det är dock också viktigt att göra vissa medlemsfunktioner och medlemsdata tillgängliga så att de dolda uppgifterna kan manipuleras indirekt.

Åtkomstmodifierarna för C ++ låter oss bestämma vilka klassmedlemmar som är tillgängliga för andra klasser och funktioner och vilka inte.

Till exempel,

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

Här döljs variablerna patientNummer och diagnos i Patientklassen med hjälp av privatenyckelordet, medan medlemsfunktionerna görs tillgängliga med hjälp av publicnyckelordet.

Typer av C ++ åtkomstmodifierare

I C ++ finns 3 åtkomstmodifierare:

  • public
  • private
  • protected

public Access Modifier

  • Det publicnyckelordet används för att skapa offentliga medlemmar (data och funktioner).
  • De offentliga medlemmarna är tillgängliga från alla delar av programmet.

Exempel 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:

 Ange din ålder: 20 Ålder = 20

I det här programmet har vi skapat en klass med namnet Samplesom innehåller en publicvariabel ålder och en publicfunktion displayAge().

I main()har vi skapat ett objekt av Sampleklassen med namnet obj1. Vi kommer sedan åt de offentliga elementen direkt genom att använda koder obj.ageoch obj.displayAge().

privat åtkomstmodifierare

  • Det privatenyckelordet används för att skapa privata medlemmar (data och funktioner).
  • De privata medlemmarna kan endast nås inom klassen.
  • Vänklasser och vänfunktioner kan dock komma åt privata medlemmar.

Exempel 2: C ++ privat åtkomstspecifikator

 #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:

 Ange din ålder: 20 Ålder = 20

I main(), objektet obj1 kan inte direkt få tillgång till klassvariabelåldern.

 // error cin>> obj1.age;

Vi kan bara indirekt manipulera ålder genom den offentliga funktionen displayAge(), eftersom denna funktion tilldelar ålder till argumentet som skickas in i den, dvs funktionsparametern int a.

skyddad åtkomstmodifierare

Innan vi lär oss om protectedåtkomstspecifikatorn, se till att du känner till arv i C ++.

  • Det protectednyckelordet används för att skapa skyddade medlemmar (data och funktions).
  • De skyddade medlemmarna kan nås inom klassen och från den härledda klassen.

Exempel 3: C ++ skyddad 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:

 Ange din ålder: 20 Ålder = 20

Här ChildSampleär en ärvd klass som härrör från Sample. Den variabla åldern anges Samplemed protectednyckelordet.

Det betyder att ChildSamplekan komma åt ålder eftersom det Sampleär dess överordnade klass.

Vi ser detta eftersom vi har tilldelat åldersvärdet ChildSampleäven om ålder anges i Sampleklassen.

Sammanfattning: offentlig, privat och skyddad

  • public element kan nås av alla andra klasser och funktioner.
  • privateelement kan inte nås utanför den klass där de deklareras, förutom av friendklasser och funktioner.
  • protectedelement är precis som private, förutom att de kan nås av härledda klasser.
Specifikatorer Samma klass Härledd klass Utanför klass
public Ja Ja Ja
private Ja Nej Nej
protected Ja Ja Nej

Obs! Som standard är klassmedlemmar i C ++ private, om inte annat anges.

Intressanta artiklar...