Introduksjon til Access Modifiers i C ++

Å beskytte data har vært i trend i lang tid, ettersom det er den viktigste delen av hvert domene. Hvis går i feil hånd, vil du lide mye. Å håndtere dataene dine på en systematisk måte objektorientert programmering tilbyr en fremtredende funksjon kjent som Data skjul. Dette konseptet kan implementeres i C ++ ved hjelp av Access-modifikatorer. De er nøkkelord som brukes til å angi tilgjengeligheten til metoder, klasser og andre medlemmer. Offentlige, private og beskyttede er kjent som Access Modifiers eller Access Specifiers i objektorienterte programmeringsspråk. For å forhindre at funksjonene til et program får direkte tilgang til den interne representasjonen av en klasse, brukes data-skjul.

Typer tilgangsmodifiserere i C ++

Det er 3 typer Access Modifiers i C ++

  1. Offentlig
  2. Privat
  3. beskyttet

La oss ta en titt på disse modifikatorene med eksempler:

1. Offentlig

Som navnet antyder, tilgjengelig for alle. Alle medlemmene i klassen vil være tilgjengelig for alle etter å ha erklært dem som offentlige. Et offentlig medlem kan nås hvor som helst utenfor klassen, men innenfor et program. Data medlemmer kan også få tilgang til av andre klasser hvis de erklæres offentlige. Siden det ikke er noen begrensninger i offentlig modifikator, kan vi bruke (.) Prikkoperatøren til å få direkte tilgang til medlemsfunksjoner og data.

Kode:

#include
using namespace std;
class parent
(
private:
int p;
protected:
int q;
public:
int r;
parent() //constructor to initialize data members
(
p = 100;
q = 200;
r = 300;
)
);
//Inheritance concept
class child: public parent
(
//q becomes protected and r becomes public members of class child
public:
void showdata()
(
cout << "p is not accessible" << endl;
cout << "value of q is " << q << endl;
cout << "value of r is " << r << endl;
)
);
int main()
(
child c; //object of derived class(child)
c.showdata();
//cp = 100; invalid : private member, no access
//cq = 200; invalid : q is now private member of child class
//cr = 300; invalid : r is also now a private member of child class
return 0;
)

Produksjon:


2. Privat

En privat modifiser er en av de beste Access Modifiers i C ++. Omfanget av private data medlemmer forblir i klassen, det er grunnen til at funksjonen inne i klassen får tilgang til klassemedlemmer som er erklært som private. For det er det private betyr bare at du bestemmer hvem som kan bruke tingene dine (som en venn) eller ikke. Du kan ikke få tilgang til medlemmene direkte av noe objekt eller funksjon som er utenfor klassen. En venns funksjon (som sagt kan bruke tingene dine) kan brukes til å få tilgang til private data medlemmer av klassen. Du vil få en kompilertidsfeil mens du får tilgang til private datamedlemmer fra hvor som helst utenfor klassen.

Kode:

#include
using namespace std;
// Defining class
class Circle
( // private data member
private:
double radius;
// public member function
public:
void areaOfCircle(double r)
( // member function can access private
// data member radius
radius = r;
double area = 3.14*radius*radius;
cout << "Radius is: " << radius << endl;
cout << "Area is: " << area;
) );
// Main function
int main()
( // creating class object
Circle c;
/* trying to access private data member
directly outside the class */
c.areaOfCircle(4.5);
return 0;
)

Produksjon:

Ved å bruke koden ovenfor kan vi indirekte få tilgang til private data medlemmer av en klasse ved å bruke de offentlige medlemsfunksjonene indirekte.

3. Beskyttet

Den siste tilgangsspesifikatoren som er viktigst brukt som tilgangsmodifiserere i C ++, da det er atferd er ganske lik en privat tilgangsmodifiserer. Beskyttede datamedlemmer eller funksjoner kan ikke få tilgang direkte fra andre klasser. Du kan bruke en vennefunksjon for å få tilgang til beskyttede medlemmer, ettersom den tillater denne funksjonaliteten. Det er noen begrensninger på den beskyttede modifisereren. Medlemmer som er erklært beskyttet, kan bare beskyttes opp til neste nivå, da blir de private.

Kode:

#include
using namespace std;
// Base class
class Parent
( // Protected data members
protected:
int id_protect;
);
// Derived class
class Child : public Parent
( public:
void set(int id)
( /* Child class to access the inherited protected data
members of the Base class */
id_protect = id;
)
void display() (
cout << "id_protect is: " << id_protect << endl;
)
);
// Main function
int main() (
Child p;
/* member function(derived class) can easily
access the data members(protected) of the base class */
p.set(07);
p.display();
return 0;
)

Produksjon:

Fra koden over kan du se at id_protect er erklært som beskyttet og kan nås ved å bruke medlemsfunksjonen til den avledede klassen. Dette betyr at du kan få tilgang til det beskyttede datamedlemmet til baseklassen ved å bruke medlemsfunksjonen til den avledede klassen.

Fordeler med tilgangsmodifiserere i C ++

Nedenfor er de forskjellige fordelene med Access Modifiers i C ++:

  • Tilgangsmodifiserer gir deg autoritet til å kontrollere dataene avhengig av scenariene. Hvis du jobber i et bankdomener, må du bruke private datamedlemmer for å holde dine data skjult for andre brukere, autoritet er i hånden. Du kan gjøre dem offentlige hvis du vil, men det vil ikke være en god tilnærming, for i alle fall kan hvem som helst endre dataene dine når som helst
  • Alle offentlige klassemedlemmer blir offentlige medlemmer av den avledede klassen. På samme måte blir alle beskyttede medlemmer av baseklassen beskyttede medlemmer av den avledede klassen, noe som vil hjelpe deg med å administrere data enkelt i alle aspekter, fordi du kan se at det ikke er noen endring i tilgangen til disse medlemmene hvis du bruker offentlig arv i programmeringsspråket. .
  • I et privat arvsscenario blir alle offentlige klassemedlemmer private medlemmer av den avledede klassen. På samme måte blir alle baseklasse beskyttede medlemmer private medlemmer av den avledede klassen, mens i beskyttet arvsscenario blir alle offentlige klasser offentlige medlemmer beskyttede medlemmer av den avledede klassen og alle baseklasser beskyttet medlem blir beskyttede medlemmer av den avledede klassen. Merk at i C ++ -tilgang fungerer spesifikasjonen per klasse, ikke per objekt-basis.

Konklusjon

Flere programmeringsspråk har ikke privat og beskyttet tilgang, derfor kan enhver bruker bruke det på de måtene de ønsker. C ++ -kodere stoler ikke på brukere, så de har ikke lov til å bruke den. Som offentlige data kan medlemmer være en alvorlig potensiell risiko for feil eller hackere.

Anbefalte artikler

Dette er en guide til Access Modifiers i C ++. Her diskuterer vi typer Access Modifiers i C ++ sammen med eksemplene og noen fordeler. Du kan også se på følgende artikler for å lære mer-

  1. Få tilgang til modifikatorer i Java
  2. Innkapsling i C ++
  3. C ++ Kommandoer
  4. Beste C ++ kompilator
  5. Typer av tilgangsmodifiserere i C #
  6. Innkapsling i JavaScript
  7. Topp 11 funksjoner og fordeler med C ++