Käytä modifioijia C++:ssa
Pääsyn muokkaajat ovat erityisiä avainsanoja C++:ssa, jotka ohjaavat luokan jäsenten näkyvyyttä (data ja funktiot).
Ne auttavat toteuttamaan tietojen piilottamista rajoittamalla tai sallimalla pääsyn tiettyihin luokan osiin.
Keskustellaan siitä yksitellen
1. Julkinen määrittäjä
Julkinen täsmennys mahdollistaa luokan jäsenten (muuttujien ja funktioiden) pääsyn mistä tahansa - luokan sisällä luokan ulkopuolelta tai jopa muista tiedostoista.
2. Yksityinen määrittäjä
Private specifier tekee luokan jäsenistä pääsyn vain luokan sisällä (pääasiassa jäsenmetodeissa) ja sitä käytetään pääasiassa tietojen piilottamiseen ulkopuolelta, jotta voimme myöhemmin tehdä muutoksia sisäisesti muuttamatta sen käyttäjien koodia. Oletusarvoisesti kaikki luokan jäsenet C++:ssa ovat yksityisiä, jos määrittäjää ei mainita.
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 ; }
Lähtö
Name: Fedrick
Mitä tapahtuu, jos yritämme päästä yksityisiin jäseniin?
Koodi antaa kääntäjävirheen, kuten näemme alla.
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 ; }
Lähtö
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. Suojattu määrittäjä
- Suojattu määrittäjä tekee jäsenistä pääsyn itse luokassa ja sen sisällä johdettu (lapsi) luokkiin, mutta ei ulkopuolista koodia.
- Sitä käytetään pääasiassa perinnössä, jolloin lapsiluokat voivat käyttää uudelleen tai muokata tietoja ja toimintoja pitäen ne silti piilossa ulkomaailmalta.
#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 ; }
Lähtö
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102
Luo tietokilpailuHuom : Tämä pääsy periytymisen kautta voi muuttaa johdetun luokan perusluokan elementtien käyttöoikeusmuunninta riippuen perintötapa .