Zugriffsmodifikatoren in C++
Zugriffsmodifikatoren sind spezielle Schlüsselwörter in C++, die die Sichtbarkeit von Klassenmitgliedern (Daten und Funktionen) steuern.
Sie helfen bei der Implementierung des Datenverbergens, indem sie den Zugriff auf bestimmte Teile einer Klasse einschränken oder zulassen.
Lassen Sie uns das einzeln besprechen
1. Öffentlicher Spezifizierer
Der öffentliche Spezifizierer macht Klassenmitglieder (Variablen und Funktionen) von überall aus zugänglich – innerhalb der Klasse, außerhalb der Klasse oder sogar in anderen Dateien.
2. Privater Spezifizierer
Der private Spezifizierer macht Klassenmitglieder nur innerhalb der Klasse selbst zugänglich (hauptsächlich Mitgliedsmethoden) und wird hauptsächlich dazu verwendet, Daten von außen zu verbergen, damit wir später intern Änderungen vornehmen können, ohne den Code ihrer Benutzer zu ändern. Standardmäßig sind alle Klassenmitglieder in C++ privat, wenn kein Spezifizierer angegeben ist.
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 ; }
Ausgabe
Name: Fedrick
Was passiert, wenn wir versuchen, auf private Mitglieder zuzugreifen?
Der Code gibt einen Compilerfehler aus, wie wir unten sehen können.
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 ; }
Ausgabe
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. Geschützter Bezeichner
- Der geschützte Spezifizierer macht Mitglieder innerhalb der Klasse selbst und in ihrer Klasse zugänglich abgeleitet (untergeordnete) Klassen, bilden aber keinen externen Code.
- Es wird hauptsächlich bei der Vererbung verwendet und ermöglicht es untergeordneten Klassen, Daten und Funktionen wiederzuverwenden oder zu ändern und sie dennoch vor der Außenwelt verborgen zu halten.
#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 ; }
Ausgabe
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102
Quiz erstellenNotiz : Dieser Zugriff durch Vererbung kann den Zugriffsmodifikator der Elemente der Basisklasse in der abgeleiteten Klasse je nach ändern Art der Vererbung .