Вступ до модифікаторів доступу в C ++

Захист даних уже давно в тренді, оскільки це найважливіша частина кожного домену. Якщо піде не в ту руку, то ви будете багато страждати. Для систематичного оброблення ваших даних об'єктно-орієнтоване програмування пропонує помітну функцію, відому як «Сховання даних». Ця концепція може бути реалізована в C ++ за допомогою модифікаторів Access. Це ключові слова, які використовуються для встановлення доступності методів, класів та інших членів. Загальнодоступне, приватне та захищене називається модифікаторами доступу або специфікаторами доступу в об'єктно-орієнтованих мовах програмування. Для запобігання функцій програми для прямого доступу до внутрішнього представлення класу використовується приховування даних.

Типи модифікаторів доступу в C ++

У C ++ є 3 типи модифікаторів доступу

  1. Публічний
  2. Приватний
  3. Захищений

Давайте розглянемо ці модифікатори з прикладами:

1. Громадський

Як випливає з назви, доступний для всіх. Усі члени класу будуть доступні всім після оголошення їх публічними. Доступ до публічного члена можна отримати в будь-якому місці поза класом, але в межах програми. Учасники даних можуть також отримати доступ до інших класів, якщо вони оголошені загальнодоступними. Оскільки в публічному модифікаторі немає обмежень, ми можемо використовувати оператор точок (.) Для прямого доступу до функцій та даних членів.

Код:

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

Вихід:


2. Приватний

Приватний модифікатор - один з найкращих модифікаторів доступу в C ++. Обсяг членів приватних даних залишається всередині класу, тому функція всередині класу може отримати доступ до членів класу, оголошених приватними. Тому що це приватне означає, що ви вирішуєте лише, хто може користуватися вашими речами (як друг) чи ні. Ви не можете отримати доступ до членів безпосередньо будь-яким об'єктом або функцією, яка знаходиться поза класом. Функція друга (як я вже казав, може використовувати ваші речі) може використовуватися для доступу до приватних даних членів класу. Ви отримаєте помилку часу компіляції під час доступу до членів приватних даних з будь-якого місця поза класом.

Код:

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

Вихід:

Використовуючи вищевказаний код, ми можемо опосередковано отримувати доступ до приватних членів класу, використовуючи функції публічного члена класу опосередковано.

3. Захищений

Останній специфікатор доступу, який найбільш важливо використовувати як модифікатори доступу в C ++, оскільки його поведінка досить схожий на приватний модифікатор доступу. Захищеним членам даних або функціям не можна отримати доступ безпосередньо з інших класів. Ви можете використовувати функцію друзів для доступу до захищених членів, оскільки це дозволяє. Існують деякі обмеження щодо захищеного модифікатора. Члени, оголошені захищеними, можуть бути захищені лише до наступного рівня, тоді він стає приватним.

Код:

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

Вихід:

З наведеного вище коду видно, що id_protect оголошено захищеним і доступ до нього можна отримати за допомогою функції-члена похідного класу. Це означає, що ви можете отримати доступ до захищеного члена даних базового класу, використовуючи функцію-член похідного класу.

Переваги модифікаторів доступу в C ++

Нижче наведено різні переваги Модифікаторів доступу в C ++:

  • Модифікатор доступу надає вам повноваження контролювати ваші дані залежно від сценаріїв. Якщо ви працюєте в домені банку, тоді вам доведеться використовувати приватні члени даних, щоб зберегти свої дані прихованими від інших користувачів, повноваження у ваших руках. Ви можете оприлюднити їх, якщо захочете, але це не буде чудовим підходом, оскільки в цьому випадку кожен може змінити ваші дані в будь-який час
  • Усі громадські члени базового класу стають публічними членами похідного класу. Таким же чином, усі захищені учасники базового класу стають захищеними членами похідного класу, що допоможе вам легко керувати даними в кожному аспекті, оскільки, як ви бачите, немає доступу до цих членів, якщо ви використовуєте публічне успадкування на своїй мові програмування .
  • У сценарії приватного успадкування всі державні члени базового класу стають приватними членами похідного класу. Таким же чином, усі захищені учасники базового класу стають приватними членами похідного класу, тоді як, у сценарії захищеного спадкування, усі громадські члени базового класу стають захищеними членами похідного класу, а всі захищені члени базового класу стають захищеними членами похідного класу. Зауважте, що в C ++ специфікація доступу працює на основі класу, а не на основі об'єкта.

Висновок

Декілька мов програмування не мають приватного і захищеного доступу, тому будь-який користувач може використовувати його в потрібні способи. Кодери C ++ не вірять користувачам, тому їм заборонено користуватися ним. Оскільки учасники публічних даних можуть становити серйозний потенційний ризик для помилок або хакерів.

Рекомендовані статті

Це посібник із модифікаторів доступу на C ++. Тут ми обговорюємо типи модифікаторів доступу в C ++ разом з його прикладами та деякими перевагами. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Доступ до модифікаторів на Java
  2. Інкапсуляція в C ++
  3. Команди C ++
  4. Найкращий компілятор C ++
  5. Типи модифікаторів доступу в C #
  6. Інкапсуляція в JavaScript
  7. Топ-11 особливостей та переваг C ++