В этом руководстве мы узнаем о модификаторах доступа для классов 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 модификатора доступа:
publicprivateprotected
модификатор публичного доступа
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, если не указано иное.








