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 Patient
klassen ved hjælp af private
nøgleordet, mens medlemsfunktionerne gøres tilgængelige ved hjælp af public
nøgleordet.
Typer af C ++ adgangsmodifikatorer
I C ++ er der 3 adgangsmodifikatorer:
public
private
protected
offentlig adgangsmodifikator
- Den
public
sø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 public
variabel alder og en public
funktion displayAge()
.
I main()
har vi oprettet et objekt af Sample
klassen med navnet obj1. Vi får derefter adgang til de offentlige elementer direkte ved hjælp af koderne obj.age
og obj.displayAge()
.
privat adgangsmodifikator
- Den
private
sø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 protected
adgangsspecifikatoren, skal du sørge for at vide om arv i C ++.
- Den
protected
sø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 ChildSample
er en nedarvet klasse, der er afledt af Sample
. Den variable alder er angivet Sample
med protected
nøgleordet.
Dette betyder, at der ChildSample
er adgang til alder, da det Sample
er dets overordnede klasse.
Vi ser dette, da vi har tildelt værdien af alder ChildSample
, selvom alder er angivet i Sample
klassen.
Resumé: offentlig, privat og beskyttet
public
elementer kan tilgås af alle andre klasser og funktioner.private
elementer kan ikke tilgås uden for den klasse, hvori de er deklareret, undtagen affriend
klasser og funktioner.protected
elementer er ligesom deprivate
, 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 ++ private
medmindre andet er angivet.