У овом упутству ћемо научити о модификаторима приступа за класе Ц ++ уз помоћ примера. Модификатори приступа Ц ++ су јавни, приватни и заштићени.
Једна од главних карактеристика објектно оријентисаних програмских језика као што је Ц ++ је скривање података .
Сакривање података односи се на ограничавање приступа члановима података класе. Ово спречава друге функције и класе да неовлаштено раде на подацима класе.
Међутим, такође је важно учинити неке функције чланова и подацима чланова доступним како би се скривеним подацима могло индиректно манипулисати.
Модификатори приступа Ц ++-а омогућавају нам да одредимо који су чланови класе доступни другим класама и функцијама, а који не.
На пример,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Овде су променљиве ПатиентНумбер и дијагноза Patient
класе скривене помоћу private
кључне речи, док су функције чланова доступне помоћу public
кључне речи.
Врсте модификатора приступа Ц ++
У Ц ++-у постоје 3 модификатора приступа:
public
private
protected
јавни модификатор приступа
- Кључна
public
реч се користи за стварање јавних чланова (података и функција). - Члановима јавности је доступан било који део програма.
Пример 1: Ц ++ модификатор јавног приступа
#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
променљиву старост и public
функцију displayAge()
.
Године main()
креирали смо објекат Sample
класе под називом обј1. Затим приступамо јавним елементима директно помоћу кодова obj.age
и obj.displayAge()
.
приватни модификатор приступа
- Кључна
private
реч се користи за стварање приватних чланова (података и функција). - Приватним члановима се може приступити само из разреда.
- Међутим, часови пријатеља и функције пријатеља могу приступити приватним члановима.
Пример 2: Спецификатор приватног приступа Ц ++
#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()
, објекат обј1 не може директно приступити променљивој класе аге.
// error cin>> obj1.age;
Старосном заједницом можемо само индиректно манипулисати путем јавне функције displayAge()
, јер ова функција додељује старост аргументу који јој је прослеђен, тј int a
.
заштићени модификатор приступа
Пре него што научимо о protected
спецификатору приступа, уверите се да знате о наслеђивању у Ц ++.
- Кључна
protected
реч се користи за стварање заштићених чланова (података и функција). - Заштићеним члановима се може приступити унутар класе и из изведене класе.
Пример 3: Спецификатор приступа заштићен Ц ++
#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
је њена родитељска класа.
То видимо јер смо доделили вредност старости ChildSample
иако је старост декларисана у Sample
класи.
Сажетак: јавно, приватно и заштићено
public
елементима могу да приступе све друге класе и функције.private
елементима се не може приступити изван класе у којој су декларисани, осим поfriend
класама и функцијама.protected
елементи су сличниprivate
, осим што им могу приступити изведене класе.
Спецификатори | Иста класа | Изведена класа | Оутсиде Цласс |
---|---|---|---|
public | да | да | да |
private | да | Не | Не |
protected | да | да | Не |
Напомена: Подразумевано су чланови класе на Ц ++ private
, осим ако није другачије назначено.