Introduktion til Access Modifiers i C ++

Beskyttelse af data har været i trend i lang tid, da det er den vigtigste del af hvert domæne. Hvis går i den forkerte hånd, vil du lide meget. At håndtere dine data på en systematisk måde objektorienteret programmering tilbyder en fremtrædende funktion kendt som Data skjul. Dette koncept kan implementeres i C ++ ved hjælp af Access-modifikatorer. Det er nøgleord, der bruges til at indstille tilgængeligheden af ​​metoder, klasser og andre medlemmer. Offentlige, private og beskyttede er kendt som Access Modifiers eller Access Specifiers på objektorienterede programmeringssprog. For at forhindre funktionerne i et program til direkte adgang til den interne repræsentation af en klasse, bruges data-skjul.

Typer af adgangsmodifikatorer i C ++

Der er 3 typer Access Modifiers i C ++

  1. Offentlig
  2. Privat
  3. Beskyttet

Lad os se på disse modifikatorer med eksempler:

1. Offentlig

Som navnet antyder, tilgængelig for alle. Alle medlemmer af klassen vil være tilgængelige for alle, når de er erklæret for offentligt. Et offentligt medlem kan fås overalt uden for klassen, men inden for et program. Data medlemmer kan også få adgang til af andre klasser, hvis de erklæres for offentligt. Da der ikke er nogen begrænsninger i den offentlige modifikator, kan vi bruge (.) Dot-operatøren til direkte adgang til medlemsfunktioner 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;
)

Produktion:


2. Privat

En privat modifikator er en af ​​de bedste Access Modifiers i C ++. Omfanget af private data medlemmer forbliver i klassen, det er grunden til, at funktionen inde i klassen kan få adgang til klassemedlemmer, der er erklæret som private. Fordi det er, hvad privat betyder, at du kun bestemmer, hvem der kan bruge dine ting (som en ven) eller ej. Du kan ikke få adgang til medlemmer direkte af noget objekt eller funktion, der er uden for klassen. En vens funktion (som sagt kan bruge dine ting) kan bruges til at få adgang til private datamedlemmer i klassen. Du får en kompileringstid-fejl, mens du får adgang til private datamedlemmer overalt uden for 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;
)

Produktion:

Ved at bruge ovenstående kode kan vi indirekte få adgang til private data medlemmer af en klasse ved hjælp af klassens offentlige medlemsfunktioner indirekte.

3. Beskyttet

Den sidste adgangsspecifikation, der vigtigst er brugt som Access Modifiers i C ++, da det er adfærd ligner en privat adgangsmodifikator. Beskyttede datamedlemmer eller -funktioner kan ikke få adgang direkte fra andre klasser. Du kan bruge en vensfunktion til at få adgang til beskyttede medlemmer, da det tillader denne funktionalitet. Der er nogle begrænsninger på den beskyttede modifikator. Medlemmer, der er erklæret som beskyttet, kan kun beskyttes op til næste niveau, så bliver 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;
)

Produktion:

Fra ovenstående kode kan du se, at id_protect er erklæret som beskyttet og kan fås adgang ved hjælp af medlemsfunktionen i den afledte klasse. Dette betyder, at du kan få adgang til det beskyttede datamedlem i baseklassen ved hjælp af medlemsfunktionen i den afledte klasse.

Fordele ved Access Modifiers i C ++

Nedenfor er de forskellige fordele ved Access Modifiers i C ++:

  • Adgangsmodifikator giver dig autoriteten til at kontrollere dine data afhængigt af scenarierne. Hvis du arbejder i et bankdomæne, skal du bruge private datamedlemmer til at holde dine data skjult for andre brugere, autoritet er i din hånd. Du kan gøre dem offentlige, hvis du vil, men det vil ikke være en god tilgang, for i det tilfælde kan enhver ændre dine data til enhver tid
  • Alt offentligt medlem af baseklassen bliver offentlige medlemmer af den afledte klasse. På samme måde bliver alle basisklasse beskyttede medlemmer beskyttede medlemmer af den afledte klasse, som vil hjælpe dig med at administrere data let på alle aspekter, da du kan se, at der ikke er nogen ændring i adgangen til disse medlemmer, hvis du bruger offentlig arv i dit programmeringssprog .
  • I et privat arvescenarie bliver alle offentlige klasser til private medlemmer af den afledte klasse. På samme måde bliver alle basisklasse beskyttede medlemmer private medlemmer af den afledte klasse, mens alle beskyttede arvemedlemmer i beskyttet arvsscenarie bliver beskyttede medlemmer af den afledte klasse, og alle baseklasse beskyttede medlemmer bliver beskyttede medlemmer af den afledte klasse. Bemærk, at i C ++ -adgangspecifikationen fungerer pr. Klasse og ikke per objekt.

Konklusion

Flere programmeringssprog har ikke privat og beskyttet adgang, derfor kan enhver bruger bruge det på de måder, de ønsker. C ++ -kodere har ikke tillid til brugere, så de har ikke tilladelse til at bruge det. Som offentlige data kan medlemmer være en alvorlig potentiel risiko for fejl eller hackere.

Anbefalede artikler

Dette er en guide til Access Modifiers i C ++. Her diskuterer vi typerne af Access Modifiers i C ++ sammen med dets eksempler og nogle fordele. Du kan også se på de følgende artikler for at lære mere-

  1. Få adgang til modifikatorer i Java
  2. Indkapsling i C ++
  3. C ++ -kommandoer
  4. Bedste C ++ Compiler
  5. Typer af adgangsmodifikatorer i C #
  6. Indkapsling i JavaScript
  7. Top 11 funktioner og fordele ved C ++

Kategori: