Åtkomstmodifierare i C++

Åtkomstmodifierare i C++

Åtkomstmodifierare är speciella nyckelord i C++ som styr synligheten för klassmedlemmar (data och funktioner).
De hjälper till att implementera datadöljande genom att begränsa eller tillåta åtkomst till vissa delar av en klass.

typer_av_åtkomst_modifierare

Låt oss diskutera det en efter en

1. Offentlig specificering

Public specifier gör klassmedlemmar (variabler och funktioner) tillgängliga från var som helst - inuti klassen utanför klassen eller till och med andra filer.

2. Privat specificator

Private specifier gör klassmedlemmar tillgängliga endast i själva klassen (främst medlemsmetoder) och används främst för att dölja data utifrån så att vi kan göra ändringar internt senare utan att ändra koden för dess användare. Som standard är alla klassmedlemmar i C++ privata om ingen specifikator nämns.

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  ;   }   

Produktion
Name: Fedrick  

Vad händer om vi försöker komma åt privata medlemmar?

Koden ger kompilatorfel som vi kan se nedan.

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  ;   }   

Produktion

 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. Protected Specifier

  • Den skyddade specifikationen gör medlemmar tillgängliga i själva klassen och i dess härledd (barn)klasser men inte utgör extern kod.
  • Det används främst i arv, vilket gör att barnklasser kan återanvända eller ändra data och funktioner samtidigt som de hålls dolda från omvärlden.
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  ;   }   

Produktion
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102  


Notera : Denna åtkomst genom arv kan ändra åtkomstmodifieraren för elementen i basklassen i härledd klass beroende på arvssätt .

Skapa frågesport