C ++ Access Modifiers

In deze tutorial leren we met behulp van voorbeelden over de toegangsmodificatoren voor C ++ - klassen. De toegangsmodificatoren van C ++ zijn openbaar, privé en beveiligd.

Een van de belangrijkste kenmerken van objectgeoriënteerde programmeertalen zoals C ++ is het verbergen van gegevens .

Gegevens verbergen verwijst naar het beperken van de toegang tot gegevensleden van een klas. Dit is om te voorkomen dat andere functies en klassen knoeien met de klassegegevens.

Het is echter ook belangrijk om sommige lidfuncties en lidgegevens toegankelijk te maken, zodat de verborgen gegevens indirect kunnen worden gemanipuleerd.

Met de toegangsmodificatoren van C ++ kunnen we bepalen welke klasleden toegankelijk zijn voor andere klassen en functies en welke niet.

Bijvoorbeeld,

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

Hier worden de variabelen patientNumber en diagnose van de Patientklas verborgen met behulp van het privatetrefwoord, terwijl de lidfuncties toegankelijk worden gemaakt met behulp van het publictrefwoord.

Soorten C ++ Access Modifiers

In C ++ zijn er 3 toegangsmodificatoren:

  • public
  • private
  • protected

openbare toegangsmodificator

  • Het publictrefwoord wordt gebruikt om openbare leden (gegevens en functies) te maken.
  • De publieke leden zijn toegankelijk vanuit elk deel van het programma.

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

Uitgang:

 Voer uw leeftijd in: 20 Leeftijd = 20

In dit programma hebben we een klasse gemaakt met de naam Sample, die een publicvariabele leeftijd en een publicfunctie bevat displayAge().

In main()hebben we een object gemaakt van de Sampleklasse met de naam obj1. We hebben dan rechtstreeks toegang tot de openbare elementen met behulp van de codes obj.ageen obj.displayAge().

private toegangsmodificator

  • Het privatetrefwoord wordt gebruikt om privé-leden (gegevens en functies) aan te maken.
  • De privé-leden zijn alleen toegankelijk vanuit de klas.
  • Vriendenklassen en vriendenfuncties hebben echter toegang tot privéleden.

Voorbeeld 2: C ++ private Access Specifier

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

Uitgang:

 Voer uw leeftijd in: 20 Leeftijd = 20

In main()heeft het object obj1 geen directe toegang tot de klassenvariabele age.

 // error cin>> obj1.age;

We kunnen de leeftijd alleen indirect manipuleren via de publieke functie displayAge(), aangezien deze functie leeftijd toekent aan het argument dat erin wordt doorgegeven, dwz de functieparameter int a.

beschermde toegangsmodificator

Voordat we meer te weten komen over de protectedtoegangsspecificatie, moet u ervoor zorgen dat u op de hoogte bent van overerving in C ++.

  • Het protectedtrefwoord wordt gebruikt om beschermde leden (gegevens en functie) te maken.
  • De beschermde leden zijn toegankelijk binnen de klasse en vanuit de afgeleide klasse.

Voorbeeld 3: C ++ beveiligde toegangsspecificatie

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

Uitgang:

 Voer uw leeftijd in: 20 Leeftijd = 20

Hier ChildSampleis een overgeërfde klasse die is afgeleid van Sample. De variabele leeftijd wordt aangegeven Samplemet het protectedtrefwoord.

Dit betekent dat ChildSampletoegang tot de leeftijd is, aangezien Sampledit de bovenliggende klasse is.

We zien dit omdat we de waarde van de leeftijd hebben toegekend, ChildSampleook al wordt leeftijd aangegeven in de Sampleklas.

Samenvatting: openbaar, privé en beschermd

  • public elementen zijn toegankelijk voor alle andere klassen en functies.
  • privateelementen zijn niet toegankelijk buiten de klasse waarin ze zijn gedeclareerd, behalve door friendklassen en functies.
  • protectedelementen zijn net als de private, behalve dat ze toegankelijk zijn voor afgeleide klassen.
Specificaties Zelfde klas Afgeleide klasse Buiten de klas
public Ja Ja Ja
private Ja Nee Nee
protected Ja Ja Nee

Opmerking: standaard zijn klasleden in C ++ private, tenzij anders aangegeven.

Interessante artikelen...