Модифікатори доступу C ++

У цьому підручнику ми дізнаємося про модифікатори доступу для класів C ++ за допомогою прикладів. Модифікатори доступу на C ++ є загальнодоступними, приватними та захищеними.

Однією з основних особливостей об’єктно-орієнтованих мов програмування, таких як С ++, є приховування даних .

Приховування даних відноситься до обмеження доступу членів даних класу. Це робиться для того, щоб інші функції та класи не втручались у дані класу.

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

Модифікатори доступу на C ++ дозволяють нам визначити, які члени класу доступні для інших класів та функцій, а які ні.

Наприклад,

 class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) ); 

Тут змінні PatientNumber та діагностика Patientкласу приховані за допомогою privateключового слова, тоді як функції-члени робляться доступними за допомогою publicключового слова.

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

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

  • public
  • private
  • protected

модифікатор загальнодоступного доступу

  • publicКлючове слово використовується для створення відкритих членів (дані і функції).
  • Громадські члени мають доступ до будь-якої частини програми.

Приклад 1: Модифікатор загальнодоступного доступу C ++

 #include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )

Вихід:

 Введіть свій вік: 20 Вік = 20

У цій програмі ми створили клас з іменем Sample, який містить publicзмінний вік та publicфункцію displayAge().

У main(), ми створили об'єкт Sampleкласу на ім'я obj1. Потім ми отримуємо доступ до відкритих елементів безпосередньо, використовуючи коди obj.ageта obj.displayAge().

приватний модифікатор доступу

  • privateКлючове слово використовується для створення приватних користувачів (дані і функції).
  • До приватних учасників можна отримати доступ лише з класу.
  • Однак класи друзів та функції друзів можуть отримати доступ до приватних членів.

Приклад 2: Специфікатор приватного доступу C ++

 #include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )

Вихід:

 Введіть свій вік: 20 Вік = 20

У main(), об'єкт obj1 не може безпосередньо отримати доступ до змінної класу age.

 // error cin>> obj1.age;

Ми можемо лише побічно маніпулювати віком за допомогою публічної функції displayAge(), оскільки ця функція призначає вік аргументу, переданому в неї, тобто параметру функції int a.

захищений модифікатор доступу

Перш ніж ми дізнаємося про protectedспецифікатор доступу, переконайтеся, що ви знаєте про успадкування в C ++.

  • protectedКлючове слово використовується для створення захищених членів (дані і функції).
  • До захищених членів можна отримати доступ як у класі, так і з похідного класу.

Приклад 3: Захищений специфікатор доступу C ++

 #include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )

Вихід:

 Введіть свій вік: 20 Вік = 20

Тут ChildSampleє успадкований клас, який походить від Sample. Мінлива вік оголошена в Sampleс protectedключовим словом.

Це означає, що він ChildSampleможе отримати доступ до віку, оскільки Sampleє його батьківським класом.

Ми бачимо це, оскільки ми призначили значення віку, ChildSampleнавіть якщо вік оголошений у Sampleкласі.

Короткий зміст: державний, приватний та захищений

  • public елементи можуть бути доступними для всіх інших класів та функцій.
  • privateЕлементи не можуть бути доступні поза класом, в якому вони оголошені, за винятком friendкласів та функцій.
  • protectedелементи подібні до private, за винятком того, що до них можуть отримати доступ похідні класи.
Специфікатори Той самий клас Похідний клас Поза класом
public Так Так Так
private Так Ні Ні
protected Так Так Ні

Примітка: За замовчуванням члени класу в C ++ є private, якщо не вказано інше.

Цікаві статті...