Hozzáférés a módosítókhoz C++ nyelven
A hozzáférés-módosítók azok speciális kulcsszavak C++ nyelven, amelyek az osztálytagok (adatok és függvények) láthatóságát szabályozzák.
Segítenek az adatrejtés megvalósításában azáltal, hogy korlátozzák vagy engedélyezik a hozzáférést az osztály bizonyos részeihez.
Beszéljük meg egyenként
1. Nyilvános megadó
A nyilvános specifikátor az osztálytagokat (változókat és függvényeket) bárhonnan elérhetővé teszi – az osztályon belül, az osztályon kívül vagy akár más fájlokban is.
2. Privát megadó
A Private specifier csak magán az osztályon belül teszi elérhetővé az osztálytagokat (főleg a tagmetódusokat), és főleg az adatok kívülről való elrejtésére szolgál, hogy később belső változtatásokat hajthassunk végre anélkül, hogy megváltoztatnánk a felhasználói kódot. Alapértelmezés szerint minden osztálytag a C++-ban privát, ha nincs megadva specifikáció.
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 ; }
Kimenet
Name: Fedrick
Mi történik, ha megpróbálunk hozzáférni a privát tagokhoz?
A kód fordítóhibát ad, amint azt alább láthatjuk.
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 ; }
Kimenet
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. Védett specifikátor
- A védett specifikátor elérhetővé teszi a tagokat az osztályon belül és az osztályban származtatott (gyermek) osztályok, de nem képeznek külső kódot.
- Főleg az öröklődésben használják, lehetővé téve a gyermekosztályok számára, hogy újra felhasználják vagy módosítsák az adatokat és funkciókat, miközben továbbra is rejtve maradnak a külvilág elől.
#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 ; }
Kimenet
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102
Kvíz létrehozásaJegyzet : Ez az öröklődésen keresztüli hozzáférés megváltoztathatja az alaposztály elemeinek hozzáférésmódosítóját a származtatott osztályban attól függően, hogy az öröklődés módja .