Ц ++ Модификатори приступа

У овом упутству ћемо научити о модификаторима приступа за класе Ц ++ уз помоћ примера. Модификатори приступа Ц ++ су јавни, приватни и заштићени.

Једна од главних карактеристика објектно оријентисаних програмских језика као што је Ц ++ је скривање података .

Сакривање података односи се на ограничавање приступа члановима података класе. Ово спречава друге функције и класе да неовлаштено раде на подацима класе.

Међутим, такође је важно учинити неке функције чланова и подацима чланова доступним како би се скривеним подацима могло индиректно манипулисати.

Модификатори приступа Ц ++-а омогућавају нам да одредимо који су чланови класе доступни другим класама и функцијама, а који не.

На пример,

 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, осим ако није другачије назначено.

Занимљиви Чланци...