Introduktion till åtkomstmodifierare i C ++

Att skydda data har varit i trend länge, eftersom det är den viktigaste delen av varje domän. Om går i fel hand kommer du att drabbas mycket. Att hantera dina data på ett systematiskt sätt objektorienterad programmering erbjuder en framträdande funktion som kallas Data dölja. Detta koncept kan implementeras i C ++ med hjälp av Access-modifierare. Det är nyckelord som används för att ställa in tillgänglighet för metoder, klasser och andra medlemmar. Offentliga, privata och skyddade kallas Access Modifiers eller Access Specifiers på objektorienterade programmeringsspråk. För att förhindra att programmets funktioner direkt får åtkomst till den interna representationen av en klass, används datadömning.

Typer av åtkomstmodifierare i C ++

Det finns 3 typer av åtkomstmodifierare i C ++

  1. offentlig
  2. Privat
  3. Skyddade

Låt oss ta en titt på dessa modifierare med exempel:

1. Offentligt

Som namnet antyder, tillgängligt för alla. Alla medlemmar i klassen kommer att vara tillgängliga för alla efter att ha förklarat dem som offentliga. En allmän medlem kan nås var som helst utanför klassen men inom ett program. Data medlemmar kan också nås av andra klasser om de förklaras offentliga. Eftersom det inte finns några begränsningar i den offentliga modifieraren, kan vi använda (.) Dot-operatören för att direkt komma åt medlemsfunktioner och data.

Koda:

#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 modifierare är en av de bästa åtkomstmodifierarna i C ++. Omfattningen av medlemmar med privata data förblir i klassen och därför kan funktionen i klassen få åtkomst till klassmedlemmar som deklareras som privata. För det är det som privat betyder bara att du bestämmer vem som kan använda dina saker (som en vän) eller inte. Du kan inte få tillgång till medlemmarna direkt av något objekt eller funktion utanför klassen. En väns funktion (som sagt kan använda dina saker) kan användas för att få åtkomst till privata dataledamöter i klassen. Du får ett kompileringstidsfel när du får åtkomst till privata datamedlemmar från var som helst utanför klassen.

Koda:

#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:

Genom att använda koden ovan kan vi få tillgång till privata datamedlemmar i en klass indirekt genom att använda de offentliga medlemsfunktionerna indirekt.

3. Skyddad

Den senaste åtkomstspecifikationen som viktigast av allt används som åtkomstmodifierare i C ++ eftersom dess beteende är ganska lik en privat åtkomstmodifierare. Skyddade medlemmar eller funktioner kan inte få åtkomst direkt från andra klasser. Du kan använda en vänfunktion för att få åtkomst till skyddade medlemmar eftersom den tillåter denna funktion. Det finns vissa begränsningar för den skyddade modifieraren. Medlemmar som deklarerats som skyddade kan bara skyddas upp till nästa nivå då det blir privat.

Koda:

#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:

Från koden ovan kan du se att id_protect deklareras som skyddat och kan nås med medlemfunktionen i den härledda klassen. Detta innebär att du kan komma åt den skyddade datamedlemmen i basklassen genom att använda medlemsfunktionen för den härledda klassen.

Fördelar med åtkomstmodifierare i C ++

Nedan är de olika fördelarna med Access Modifiers i C ++:

  • Åtkomstmodifierare ger dig behörighet att kontrollera dina data beroende på scenarierna. Om du arbetar i en bankdomän måste du använda privata datamedlemmar för att hålla dina data dolda för andra användare, myndighet är i din hand. Du kan göra dem offentliga om du vill, men det kommer inte att vara ett bra tillvägagångssätt eftersom i så fall kan alla ändra dina data när som helst
  • All allmän medlem i basklass blir offentliga medlemmar i den härledda klassen. På samma sätt blir alla basskyddade medlemmar skyddade medlemmar i den härledda klassen som hjälper dig att hantera data enkelt i alla aspekter, eftersom du kan se att det inte finns någon förändring i att få åtkomst till dessa medlemmar om du använder offentligt arv i ditt programmeringsspråk .
  • I ett privat arvsscenario blir alla offentliga medlemmar i basklass privata medlemmar i den härledda klassen. På samma sätt blir alla basklasser skyddade medlemmar privata medlemmar i den härledda klassen medan, i skyddat arvsscenario, blir alla basklassen offentliga medlemmar skyddade medlemmar i den härledda klassen och alla basklassskyddade medlemmar blir skyddade medlemmar i den härledda klassen. Observera att i C ++ åtkomstspecifikation fungerar per klass, inte per objekt.

Slutsats

Flera programmeringsspråk har inte privat och skyddad åtkomst, därför kan alla användare använda det på det sätt de vill. C ++ -kodare litar inte på användare så de får inte använda den. Som offentliga uppgifter kan medlemmar vara en allvarlig potentiell risk för buggar eller hackare.

Rekommenderade artiklar

Detta är en guide till Access Modifiers i C ++. Här diskuterar vi typerna av Access Modifiers i C ++ tillsammans med dess exempel och några fördelar. Du kan också titta på följande artiklar för att lära dig mer-

  1. Få åtkomst till modifierare i Java
  2. Inkapsling i C ++
  3. C ++ -kommandon
  4. Bästa C ++ Compiler
  5. Typer av åtkomstmodifierare i C #
  6. Inkapsling i JavaScript
  7. Topp 11 funktioner och fördelar med C ++

Kategori: