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

В этом руководстве мы узнаем о модификаторах доступа для классов C ++ с помощью примеров. Модификаторы доступа C ++ бывают общедоступными, частными и защищенными.

Одной из основных функций объектно-ориентированных языков программирования, таких как C ++, является скрытие данных .

Скрытие данных относится к ограничению доступа к элементам данных класса. Это сделано для предотвращения изменения данных класса другими функциями и классами.

Однако также важно сделать некоторые функции-члены и данные-члены доступными, чтобы скрытыми данными можно было управлять косвенно.

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

Например,

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

Здесь переменные пациентаNumber и диагноз 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переменную age и 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это его родительский класс.

Мы видим это, поскольку присвоили значение age, ChildSampleдаже если age объявлен в Sampleклассе.

Резюме: общедоступное, частное и защищенное

  • public к элементам могут получить доступ все остальные классы и функции.
  • privateк элементам нельзя получить доступ за пределами класса, в котором они объявлены, за исключением friendклассов и функций.
  • protectedэлементы такие же, как private, за исключением того, что к ним могут обращаться производные классы.
Спецификаторы Тот же класс Производный класс Вне класса
public да да да
private да Нет Нет
protected да да Нет

Примечание. По умолчанию членами класса в C ++ являются private, если не указано иное.

Интересные статьи...