Модификатори приступа у Ц++
Модификатори приступа су посебне кључне речи у Ц++ који контролишу видљивост чланова класе (подаци и функције).
Они помажу у имплементацији скривања података ограничавањем или дозвољавањем приступа одређеним деловима класе.
Хајде да разговарамо о томе један по један
1. Јавни Спецификатор
Публиц специфицер чини члановима класе (променљиве и функције) доступним са било ког места - унутар класе ван класе или чак других датотека.
2. Приватни специфицатор
Приватни специфицер чини члановима класе доступним само унутар саме класе (углавном методе чланова) и углавном се користи за сакривање података споља како бисмо касније могли интерно уносити измене без промене кода њених корисника. Подразумевано, сви чланови класе у Ц++ су приватни ако се не помиње никакав спецификатор.
CPP #include using namespace std ; class Employee { private : // salary and empId cannot be accessed // from outside the Class double salary ; int empID ; public : string name ; // Name can be accessed anywhere Employee ( string n double s int id ) { name = n ; salary = s ; empID = id ; } }; int main () { Employee emp ( 'Fedrick' 50000 101 ); cout < < 'Name: ' < < emp . name < < endl ; return 0 ; }
Излаз
Name: Fedrick
Шта се дешава ако покушамо да приступимо приватним члановима?
Код даје грешку компајлера као што можемо видети у наставку.
C++ #include using namespace std ; class Employee { private : double salary ; int empID ; public : string name ; // Constructor Employee ( string n double s int id ) { name = n ; salary = s ; empID = id ; } }; int main () { Employee emp ( 'Fedrick' 50000 101 ); cout < < emp . salary < < endl ; return 0 ; }
Излаз
compilation error
prog.cpp: In function ‘int main()’:
prog.cpp:22:17: error: ‘double Employee::salary’ is private within this context
cout < < emp.salary < < endl;
^~~~~~
prog.cpp:6:12: note: declared private here
double salary;
^~~~~~3. Заштићени спецификатор
- Заштићени спецификација чини чланове доступним унутар саме класе иу њеном изведено (дете) класе, али не формирају изван кода.
- Углавном се користи у наслеђивању омогућавајући дечијим класама да поново користе или модификују податке и функције док их и даље држе скривене од спољашњег света.
#include using namespace std ; class Employee { private : double salary ; protected : int empID ; public : string name ; Employee ( string n double s int id ) { name = n ; salary = s ; empID = id ; } }; // Derived class (inherits from Employee) class Manager : public Employee { public : Manager ( string n double s int id ) : Employee ( n s id ) {} void showDetails () { cout < < 'Manager Name: ' < < name < < endl ; cout < < 'Manager ID: ' < < empID < < endl ; } }; int main () { Employee emp ( 'Fedrick' 50000 101 ); cout < < 'Employee Name: ' < < emp . name < < endl ; Manager m ( 'Rohit' 70000 102 ); m . showDetails (); return 0 ; }
Излаз
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102
Креирај квизНапомена : Овај приступ кроз наслеђивање може да промени модификатор приступа елементима основне класе у изведеној класи у зависности од начин наслеђивања .