У цьому підручнику ми дізнаємося про модифікатори доступу для класів 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
, якщо не вказано інше.