Wprowadzenie do modyfikatorów dostępu w C ++

Ochrona danych jest od dawna modna, ponieważ jest to najważniejsza część każdej domeny. Jeśli trafisz w niewłaściwą rękę, będziesz bardzo cierpieć. W celu systematycznego przetwarzania danych programowanie obiektowe oferuje istotną funkcję znaną jako ukrywanie danych. Ta koncepcja może być zaimplementowana w C ++ za pomocą modyfikatorów Access. Są to słowa kluczowe, które służą do ustawiania dostępności metod, klas i innych członków. Publiczny, prywatny i chroniony jest znany jako modyfikatory dostępu lub specyfikatory dostępu w obiektowych językach programowania. Aby uniemożliwić funkcjom programu bezpośredni dostęp do wewnętrznej reprezentacji klasy, stosuje się ukrywanie danych.

Typy modyfikatorów dostępu w C ++

Istnieją 3 typy modyfikatorów dostępu w C ++

  1. Publiczny
  2. Prywatny
  3. Chroniony

Rzućmy okiem na te modyfikatory z przykładami:

1. Publiczne

Jak sama nazwa wskazuje, dostępna dla wszystkich. Wszyscy członkowie klasy będą dostępni dla wszystkich po ogłoszeniu ich jako publicznych. Dostęp do członka publicznego można uzyskać w dowolnym miejscu poza klasą, ale w ramach programu. Członkowie danych mogą być również dostępni dla innych klas, jeśli zostaną ogłoszone publicznie. Ponieważ nie ma żadnych ograniczeń w publicznym modyfikatorze, możemy użyć operatora kropki (.), Aby bezpośrednio uzyskać dostęp do funkcji członka i danych.

Kod:

#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;
)

Wynik:


2. Prywatny

Prywatny modyfikator jest jednym z najlepszych modyfikatorów dostępu w C ++. Zakres prywatnych członków danych pozostaje w klasie, dlatego funkcja wewnątrz klasy może uzyskać dostęp do członków klasy zadeklarowanych jako prywatne. Ponieważ to, co prywatne, oznacza, że ​​tylko ty decydujesz, kto może korzystać z twoich rzeczy (jak przyjaciel), czy nie. Nie możesz uzyskać dostępu do członków bezpośrednio przez dowolny obiekt lub funkcję spoza klasy. Funkcja znajomego (jak już mówiłem, może korzystać z twoich rzeczy) może być używana do uzyskiwania dostępu do prywatnych danych członków klasy. Podczas uzyskiwania dostępu do prywatnych członków danych z dowolnego miejsca poza klasą wystąpi błąd podczas kompilacji.

Kod:

#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;
)

Wynik:

Korzystając z powyższego kodu, możemy pośrednio uzyskać dostęp do prywatnych członków danych klasy, korzystając pośrednio z publicznych funkcji członka klasy.

3. Chroniony

Ostatni specyfikator dostępu, najważniejszy używany jako modyfikatory dostępu w C ++, ponieważ jego zachowanie jest dość podobne do prywatnego modyfikatora dostępu. Chronione elementy danych lub funkcje nie mogą być dostępne bezpośrednio z innych klas. Możesz użyć funkcji przyjaciela, aby uzyskać dostęp do chronionych członków, ponieważ umożliwia to tę funkcję. Istnieją pewne ograniczenia dotyczące chronionego modyfikatora. Członkowie zadeklarowani w trybie chronionym mogą być chronieni tylko do następnego poziomu, po czym stają się prywatne.

Kod:

#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;
)

Wynik:

Z powyższego kodu widać, że id_protect jest zadeklarowany jako chroniony i można uzyskać do niego dostęp za pomocą funkcji członka klasy pochodnej. Oznacza to, że możesz uzyskać dostęp do chronionego elementu danych klasy podstawowej za pomocą funkcji elementu klasy pochodnej.

Zalety modyfikatorów dostępu w C ++

Poniżej przedstawiamy różne zalety modyfikatorów dostępu w C ++:

  • Modyfikator dostępu zapewnia uprawnienia do kontrolowania danych w zależności od scenariuszy. Jeśli pracujesz w domenie bankowej, musisz użyć prywatnych członków danych, aby ukryć swoje dane przed innymi użytkownikami, a władza jest w twoich rękach. Możesz je upublicznić, jeśli chcesz, ale nie będzie to świetne podejście, ponieważ w takim przypadku każdy może zmienić Twoje dane w dowolnym momencie
  • Wszyscy członkowie publiczni klasy podstawowej stają się członkami publicznymi klasy pochodnej. W ten sam sposób, wszyscy chronieni członkowie klasy podstawowej stają się chronionymi członkami klasy pochodnej, co pomoże ci w łatwym zarządzaniu danymi w każdym aspekcie, ponieważ jak widzisz, nie ma żadnych zmian w dostępie do tych członków, jeśli użyjesz dziedzictwa publicznego w swoim języku programowania .
  • W scenariuszu dziedziczenia prywatnego wszyscy członkowie publiczni klasy podstawowej stają się prywatnymi członkami klasy pochodnej. W ten sam sposób, wszyscy chronieni członkowie klasy podstawowej stają się prywatnymi członkami klasy pochodnej, podczas gdy w scenariuszu chronionego dziedziczenia, wszyscy członkowie publiczni klasy podstawowej stają się chronionymi członkami klasy pochodnej, a wszyscy chronieni członkowie klasy podstawowej stają się członkami chronionymi klasy pochodnej. Zauważ, że w C ++ specyfikacja dostępu działa dla poszczególnych klas, a nie dla poszczególnych obiektów.

Wniosek

Kilka języków programowania nie ma dostępu prywatnego i chronionego, dlatego każdy użytkownik może go używać w pożądany sposób. Koderzy C ++ nie ufają użytkownikom, więc nie mogą ich używać. Ponieważ członkowie danych publicznych mogą stanowić poważne potencjalne ryzyko błędów lub hakerów.

Polecane artykuły

Jest to przewodnik po modyfikatorach dostępu w C ++. Tutaj omawiamy typy modyfikatorów dostępu w C ++ wraz z jego przykładami i pewnymi zaletami. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej-

  1. Dostęp do modyfikatorów w Javie
  2. Hermetyzacja w C ++
  3. Polecenia w C ++
  4. Najlepszy kompilator C ++
  5. Typy modyfikatorów dostępu w C #
  6. Hermetyzacja w JavaScript
  7. 11 najważniejszych funkcji i zalet C ++