У овом упутству ћемо научити о модификаторима приступа за класе Ц ++ уз помоћ примера. Модификатори приступа Ц ++ су јавни, приватни и заштићени.
Једна од главних карактеристика објектно оријентисаних програмских језика као што је Ц ++ је скривање података .
Сакривање података односи се на ограничавање приступа члановима података класе. Ово спречава друге функције и класе да неовлаштено раде на подацима класе.
Међутим, такође је важно учинити неке функције чланова и подацима чланова доступним како би се скривеним подацима могло индиректно манипулисати.
Модификатори приступа Ц ++-а омогућавају нам да одредимо који су чланови класе доступни другим класама и функцијама, а који не.
На пример,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Овде су променљиве ПатиентНумбер и дијагноза Patientкласе скривене помоћу privateкључне речи, док су функције чланова доступне помоћу publicкључне речи.
Врсте модификатора приступа Ц ++
У Ц ++-у постоје 3 модификатора приступа:
publicprivateprotected
јавни модификатор приступа
- Кључна
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, осим ако није другачије назначено.








