С++ ООП. Специфікатори доступу


Специфікатори доступу

До теперішнього часу, ви добре знайомі з ключовим словом public , яке з'являється у всіх наших прикладах класу:

class MyClass {          // оголошений клас

  public:                // Специфікатор доступу public
    // тут члени класу

};

Ключове слово public є специфікатором доступу. Специфікатори доступу визначають , як члени (атрибути і методи) класу можуть бути доступні. У наведеному вище прикладі, то члени public -  це означає , що вони можуть бути доступні і змінені поза межі коду.

Однак, що якщо ми хочемо, щоб члени бути приватними і приховані від зовнішнього світу?

У C++ є три специфікаторів доступу:

public члени доступні ззовні класу
private члени не можуть бути доступні (або переглянуті) поза класом
protected члени не можуть бути доступні ззовні класу, однак, вони можуть бути доступні в успадкованих класах.

У наступному прикладі ми покажемо різницю між public і private членами:

#include <iostream>
using namespace std;

class MyClass {

  public:    // public специфікатор доступу
    int x;   // public атрибут

  private:   // private специфікатор доступу
    int y;   // private атрибут

};

int main() {

  MyClass myObj;

  myObj.x = 25;     // Дозволено(x є public)
  myObj.y = 50;     // Не дозволено (y є private)

  return 0;
}


// RESULT:
// In function 'int main()':
// Line 8: error: 'int MyClass::y' is private
// Line 14: error: within this context 

Якщо ви намагаєтеся отримати доступ до закритого члену, виникає помилка:

error: y is private

Примітка: Можна отримати доступ до закритих членів класу з використанням відкритого методу всередині того ж класу.

Порада: Це вважається гарною практикою, щоб оголосити клас атрибутів, як приватні (так часто, як ви можете). Це зменшить можливість щоб зіпсувати код самостійно (або кимось) .

Примітка: За замовчуванням всі члени класу, private якщо ви не вказуєте специфікатор доступу:

class MyClass {
  int x;         // private атрибут
  int y;         // private атрибут
};

Наш партнер:
beta test mp3 playlist downloader