Введение в модификаторы доступа в C ++

Защита данных была в тренде в течение длительного времени, так как это самая важная часть каждого домена. Если не в ту руку, вы будете страдать много. Для систематической обработки ваших данных объектно-ориентированное программирование предлагает важную функцию, известную как скрытие данных. Эта концепция может быть реализована в C ++ с использованием модификаторов Access. Это ключевые слова, которые используются для установки доступности методов, классов и других членов. Public, Private и Protected известны как модификаторы доступа или спецификаторы доступа в объектно-ориентированных языках программирования. Для предотвращения прямого доступа функций программы к внутреннему представлению класса используется скрытие данных.

Типы модификаторов доступа в C ++

В C ++ есть 3 типа модификаторов доступа

  1. общественного
  2. Частный
  3. защищенный

Давайте посмотрим на эти модификаторы с примерами:

1. Публичная

Как следует из названия, доступно всем. Все участники класса будут доступны всем после объявления их общедоступными. Публичный член может быть доступен в любом месте за пределами класса, но внутри программы. Члены данных также могут быть доступны другим классам, если они объявлены общедоступными. Поскольку в публичном модификаторе нет ограничений, мы можем использовать оператор точки (.) Для прямого доступа к функциям-членам и данным.

Код:

#include
using namespace std;
class parent
(
private:
int p;
protected:
int q;
public:
int r;
parent() //constructor to initialize data members
(
p = 100;
q = 200;
r = 300;
)
);
//Inheritance concept
class child: public parent
(
//q becomes protected and r becomes public members of class child
public:
void showdata()
(
cout << "p is not accessible" << endl;
cout << "value of q is " << q << endl;
cout << "value of r is " << r << endl;
)
);
int main()
(
child c; //object of derived class(child)
c.showdata();
//cp = 100; invalid : private member, no access
//cq = 200; invalid : q is now private member of child class
//cr = 300; invalid : r is also now a private member of child class
return 0;
)

Выход:


2. Частный

Частный модификатор является одним из лучших модификаторов доступа в C ++. Область закрытых членов-данных остается внутри класса, поэтому функция внутри класса может получить доступ к членам класса, объявленным как закрытые. Потому что это означает, что личное означает, что только вы решаете, кто может использовать ваши вещи (например, друг) или нет. Вы не можете получить доступ к членам напрямую любым объектом или функцией, которая находится вне класса. Функция друга (как я уже сказал, может использовать ваши вещи) может быть использована для доступа к личным данным членов класса. Вы получите ошибку во время компиляции при доступе к закрытым членам данных из любого места вне класса.

Код:

#include
using namespace std;
// Defining class
class Circle
( // private data member
private:
double radius;
// public member function
public:
void areaOfCircle(double r)
( // member function can access private
// data member radius
radius = r;
double area = 3.14*radius*radius;
cout << "Radius is: " << radius << endl;
cout << "Area is: " << area;
) );
// Main function
int main()
( // creating class object
Circle c;
/* trying to access private data member
directly outside the class */
c.areaOfCircle(4.5);
return 0;
)

Выход:

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

3. Защищенный

Последний спецификатор доступа наиболее важно использовать в качестве модификаторов доступа в C ++, поскольку его поведение очень похоже на частный модификатор доступа. Защищенные данные члены или функции не могут быть доступны напрямую из других классов. Вы можете использовать функцию друга для доступа к защищенным членам, так как она позволяет эту функцию. Есть некоторые ограничения на защищенный модификатор. Члены, объявленные как защищенные, могут быть защищены только до следующего уровня, после чего он становится закрытым.

Код:

#include
using namespace std;
// Base class
class Parent
( // Protected data members
protected:
int id_protect;
);
// Derived class
class Child : public Parent
( public:
void set(int id)
( /* Child class to access the inherited protected data
members of the Base class */
id_protect = id;
)
void display() (
cout << "id_protect is: " << id_protect << endl;
)
);
// Main function
int main() (
Child p;
/* member function(derived class) can easily
access the data members(protected) of the base class */
p.set(07);
p.display();
return 0;
)

Выход:

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

Преимущества модификаторов доступа в C ++

Ниже приведены различные преимущества модификаторов доступа в C ++:

  • Модификатор доступа дает вам право контролировать ваши данные в зависимости от сценариев. Если вы работаете в банковском домене, то вам необходимо использовать личные данные участников, чтобы скрыть ваши данные от других пользователей, и власть в ваших руках. Вы можете сделать их общедоступными, если хотите, но это не будет хорошим подходом, потому что в этом случае любой может изменить ваши данные в любое время.
  • Все открытые члены базового класса становятся открытыми членами производного класса. Таким же образом, все защищенные члены базового класса становятся защищенными членами производного класса, что поможет вам легко управлять данными во всех аспектах, потому что, как вы видите, нет доступа к этим членам, если вы используете публичное наследование в своем языке программирования.,
  • В сценарии частного наследования все открытые члены базового класса становятся частными членами производного класса. Таким же образом все защищенные члены базового класса становятся частными членами производного класса, тогда как в сценарии защищенного наследования все открытые члены базового класса становятся защищенными членами производного класса, а все защищенные члены базового класса становятся защищенными членами производного класса. Обратите внимание, что в C ++ спецификация доступа работает для каждого класса, а не для каждого объекта.

Вывод

Некоторые языки программирования не имеют частного и защищенного доступа, поэтому любой пользователь может использовать его так, как он хочет. Программисты C ++ не будут доверять пользователям, поэтому им не разрешено его использовать. Поскольку общедоступные данные участников могут представлять серьезный потенциальный риск для ошибок или хакеров.

Рекомендуемые статьи

Это руководство по модификаторам доступа в C ++. Здесь мы обсуждаем типы модификаторов доступа в C ++ вместе с его примерами и некоторыми преимуществами. Вы также можете посмотреть следующие статьи, чтобы узнать больше

  1. Модификаторы доступа в Java
  2. Инкапсуляция в C ++
  3. Команды C ++
  4. Лучший компилятор C ++
  5. Типы модификаторов доступа в C #
  6. Инкапсуляция в JavaScript
  7. Лучшие 11 функций и преимуществ C ++