Модификаторы доступа в C++
Модификаторы доступа используются для управления доступностью и видимостью данных класса. Они устанавливают некоторые ограничения для членов данных, чтобы внешние функции не могли получить к ним доступ. Модификаторы доступа в C++ бывают трех типов:
Модификатор публичного доступа в C++
Все члены класса, объявленные с ключевым словом public, будут доступны всем функциям вне класса внутри программы. Оператор прямого доступа к членам (.), также известный как оператор точки, можно использовать с объектом этого конкретного класса для доступа к этим членам данных.
Пример
Модификатор открытого доступа используется для объявления класса, а доступ к его членам данных осуществляют другие функции в программе.
#include
#include
#include
использование пространства имен std ;
класс Треугольник
{
общественный :
плавать Икс , и , С ;
пустота вход ( )
{
расчет << «Введите сторону x треугольника:-» ;
принимать пищу >> Икс ;
расчет << «Введите сторону y треугольника:-» ;
принимать пищу >> и ;
расчет << «Введите сторону z треугольника:-» ;
принимать пищу >> С ;
}
пустота Область ( )
{
плавать с '=' ( Икс + и + С ) / 2 ;
плавать область '=' кврт ( с * ( с - Икс ) * ( с - и ) * ( с - С ) ) ;
расчет << ' \п Площадь треугольника =' << область ;
}
} ;
интервал основной ( )
{
Треугольник т1 ;
т1. вход ( ) ;
т1. Область ( ) ;
возвращаться 0 ;
}
Треугольник определяется как класс, а его параметры находятся под ключевым словом public. Затем площадь треугольника вычисляется вне этого класса посредством доступа к членам данных модификатора public.
Три стороны треугольника вводятся пользователем, а площадь треугольника рассчитывается путем доступа к значениям вне класса с использованием стандартной формулы 13,4164.
Модификатор частного доступа в C++
Все члены класса, объявленные с ключевым словом Private, не будут доступны какой-либо функции вне класса в программе. Эти частные члены могут быть прочитаны только прямыми членами того же класса. Однако дружественные функции и классы также могут получить доступ к данным.
Пример
Объявлены два класса, открытый и частный, и возвращаемое значение программы должно быть площадью треугольника.
#include#include
#include
использование пространства имен std ;
класс Треугольник
{
частный :
плавать Икс , и , С ;
общественный :
пустота вход ( )
{
расчет << «Введите сторону x треугольника:-» ;
принимать пищу >> Икс ;
расчет << «Введите сторону y треугольника:-» ;
принимать пищу >> и ;
расчет << «Введите сторону z треугольника:-» ;
принимать пищу >> С ;
}
пустота Область ( )
{
плавать с '=' ( Икс + и + С ) / 2 ;
плавать область '=' кврт ( с * ( с - Икс ) * ( с - и ) * ( с - С ) ) ;
расчет << ' \п Площадь треугольника =' << область ;
}
} ;
интервал основной ( )
{
Треугольник т1 ;
т1. вход ( ) ;
т1. Область ( ) ;
возвращаться 0 ;
}
В main() объект t1 не может напрямую обращаться к переменной частного класса float x, y и z, поэтому манипулировать им можно только косвенно через публичную функцию input(), поскольку эта функция получает значения x, y и z.
Площадь треугольника получается путем доступа к частному классу путем манипулирования им с использованием открытого класса. Если значения x, y и z не будут объявлены в публичном классе, то они не будут доступны в main() для вычислений.
Модификатор защищенного доступа в C++
Члены и функции с ключевым словом protected защищены, доступ к ним возможен только внутри класса и производного класса. Остальные классы не могут получить доступ к своим данным. Они очень защищены.
Пример
Защищенные данные под ключевым словом protected могут быть прочитаны только внутри класса и класса, который является производным классом. Этот пример представляет собой практическую демонстрацию модификатора защищенного доступа.
#include#include
#include
использование пространства имен std ;
//родительский класс
класс Треугольник
{
защищенный :
плавать Икс , и , С ;
} ;
//дочерний класс
класс TriangleChild : общественный треугольник {
общественный :
пустота вход ( )
{
расчет << «Введите сторону x треугольника:-» ;
принимать пищу >> Икс ;
расчет << «Введите сторону y треугольника:-» ;
принимать пищу >> и ;
расчет << «Введите сторону z треугольника:-» ;
принимать пищу >> С ;
}
пустота Область ( )
{
плавать с '=' ( Икс + и + С ) / 2 ;
плавать область '=' кврт ( с * ( с - Икс ) * ( с - и ) * ( с - С ) ) ;
расчет << ' \п Площадь треугольника =' << область ;
}
} ;
интервал основной ( )
{
ТреугольникРебенок ;
Ребенок. вход ( ) ;
Ребенок. Область ( ) ;
возвращаться 0 ;
}
TriangleChild — это унаследованный класс, производный от класса Triangle. Переменные x, y и z объявлены в Triangle с ключевым словом protected. Это означает, что эти переменные защищены, но к ним может получить доступ TriangleChild, поскольку Triangle является его родительским классом. Значения переменных были присвоены в TriangleChild, хотя они объявлены в классе Triangle.
Доступ к переменным осуществляется через дочерний класс, а затем вычисляется площадь треугольника.
Заключение
Скрытие данных предотвращает нежелательный доступ к данным класса извне. Модификаторы доступа используются для управления доступностью и видимостью данных в программе. Модификаторы частного, защищенного и публичного доступа используются для сокрытия данных. Данные под ключевым словом public также могут быть прочитаны функциями вне класса. Данные, объявленные как частные, могут быть прочитаны только внутри класса, в то время как защищенные данные могут быть доступны как родительскому, так и дочернему классу.