C++ Специфікатори доступу
Специфікатори доступу
Тепер ви добре знайомі з ключовим словом public
, яке з’являється у всіх наших прикладах класів:
Приклад
class MyClass { // Клас
public: // Специфікатор доступу
// Члени класу йдуть тут
};
Спробуйте самі »
Ключове слово public
є специфікатором доступу. Специфікатори доступу визначають, як можна отримати доступ до членів (атрибутів і методів) класу. У наведеному вище прикладі члени є public
, що означає, що до них можна отримати доступ і змінити їх поза кодом.
А що, якщо ми хочемо, щоб члени були приватними та прихованими від зовнішнього світу?
У C++ є три специфікатори доступу:
public
- члени доступні поза класомprivate
- до членів неможливо отримати доступ (або переглянути) поза класомprotected
- до членів неможливо отримати доступ поза класом, однак доступ до них можна отримати в успадкованих класах. Ви дізнаєтеся більше про Наслідування пізніше в цьому підручнику.
У наступному прикладі ми демонструємо різницю між public
і private
членами:
Приклад
class MyClass {
public: // Специфікатор публічного доступу
int x; // Публічний атрибут
private: // Специфікатор приватного доступу
int y; // Приватний атрибут
};
int main() {
MyClass myObj;
myObj.x = 25; // Дозволено (public)
myObj.y = 50; // Заборонено (privat)
return 0;
}
Якщо ви намагаєтеся отримати доступ до приватного учасника, виникає помилка:
error: y is private
Примітка. Можна отримати доступ до приватних членів класу за допомогою відкритого методу всередині того самого класу. Перегляньте наступний розділ (Інкапсуляція), щоб дізнатися, як це зробити.
Порада: Вважається хорошою практикою оголошувати атрибути класу приватними (якомога частіше). Це зменшить можливість того, що ви (чи інші) зіпсуєте код. Це також головний інгредієнт концепції Інкапсуляції, про яку ви дізнаєтеся більше в наступному розділі.
Примітка: За умовчанням усі члени класу є private
, якщо ви не вкажете специфікатор доступу:
Приклад
class MyClass {
int x; // Приватний атрибут
int y; // Приватний атрибут
};