Zugriffsmodifikatoren in C++

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.

types_of_access_modifier

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.
CPP
   #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  


Notiz : Dieser Zugriff durch Vererbung kann den Zugriffsmodifikator der Elemente der Basisklasse in der abgeleiteten Klasse je nach ändern Art der Vererbung .

Quiz erstellen

Top Artikel

Kategorie

Interessante Artikel