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 Patient
klas verborgen met behulp van het private
trefwoord, terwijl de lidfuncties toegankelijk worden gemaakt met behulp van het public
trefwoord.
Soorten C ++ Access Modifiers
In C ++ zijn er 3 toegangsmodificatoren:
public
private
protected
openbare toegangsmodificator
- Het
public
trefwoord 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 public
variabele leeftijd en een public
functie bevat displayAge()
.
In main()
hebben we een object gemaakt van de Sample
klasse met de naam obj1. We hebben dan rechtstreeks toegang tot de openbare elementen met behulp van de codes obj.age
en obj.displayAge()
.
private toegangsmodificator
- Het
private
trefwoord 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 protected
toegangsspecificatie, moet u ervoor zorgen dat u op de hoogte bent van overerving in C ++.
- Het
protected
trefwoord 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 ChildSample
is een overgeërfde klasse die is afgeleid van Sample
. De variabele leeftijd wordt aangegeven Sample
met het protected
trefwoord.
Dit betekent dat ChildSample
toegang tot de leeftijd is, aangezien Sample
dit de bovenliggende klasse is.
We zien dit omdat we de waarde van de leeftijd hebben toegekend, ChildSample
ook al wordt leeftijd aangegeven in de Sample
klas.
Samenvatting: openbaar, privé en beschermd
public
elementen zijn toegankelijk voor alle andere klassen en functies.private
elementen zijn niet toegankelijk buiten de klasse waarin ze zijn gedeclareerd, behalve doorfriend
klassen en functies.protected
elementen zijn net als deprivate
, 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.