Пошаговое руководство по С++

С++ ГЛАВНАЯ Введение в С++ С++ Начать Синтаксис С++ Вывод С++ С++ Комментарии Переменные С++ Пользовательский ввод С++ Типы данных С++ Операторы С++ Строки С++ С++ Математика Логические значения С++ Условия С++ Переключатель С++ C++ пока цикл С++ для цикла С++ Перерыв/Продолжение Массивы С++ Ссылки на С++ Указатели С++

Функции С++

Функции С++ Параметры функции С++ Перегрузка функций C++

Классы С++

С++ ООП Классы/объекты С++ Методы класса С++ Конструкторы С++ Спецификаторы доступа C++ Инкапсуляция С++ Наследование С++ Полиморфизм С++ Файлы С++ Исключения С++

С++ Как

Добавить два числа

Примеры С++

Примеры С++ Компилятор С++ Упражнения по С++ Викторина по С++


Спецификаторы доступа C++


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

К настоящему времени вы хорошо знакомы с publicключевым словом, которое встречается во всех наших примерах классов:

Пример

class MyClass {  // The class
  public:        // Access specifier
    // class members goes here
};

Ключевое publicслово является спецификатором доступа. Спецификаторы доступа определяют, как можно получить доступ к членам (атрибутам и методам) класса. В приведенном выше примере члены public- это означает, что к ним можно получить доступ и изменить их вне кода.

Однако что, если мы хотим, чтобы участники были закрытыми и скрытыми от внешнего мира?

В C++ есть три спецификатора доступа:

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

В следующем примере мы демонстрируем различия между членами publicи :private

Пример

class MyClass {
  public:    // Public access specifier
    int x;   // Public attribute
  private:   // Private access specifier
    int y;   // Private attribute
};

int main() {
  MyClass myObj;
  myObj.x = 25;  // Allowed (public)
  myObj.y = 50;  // Not allowed (private)
  return 0;
}

Если вы попытаетесь получить доступ к закрытому члену, произойдет ошибка:

error: y is private

Примечание. Можно получить доступ к закрытым членам класса, используя общедоступный метод внутри того же класса. См. следующую главу ( Инкапсуляция ) о том, как это сделать.

Совет: считается хорошей практикой объявлять атрибуты вашего класса закрытыми (как можно чаще). Это уменьшит вероятность того, что вы (или другие) испортите код. Это также основной компонент концепции инкапсуляции , о которой вы узнаете больше в следующей главе.

Примечание. По умолчанию все члены класса, privateесли вы не укажете спецификатор доступа:

Пример

class MyClass {
  int x;   // Private attribute
  int y;   // Private attribute
};