Piekļūstiet modifikatoriem programmā C++

Piekļūstiet modifikatoriem programmā C++

Piekļuves modifikatori ir īpaši atslēgvārdi valodā C++, kas kontrolē klases dalībnieku (datu un funkciju) redzamību.
Tie palīdz ieviest datu slēpšanu, ierobežojot vai atļaujot piekļuvi noteiktām klases daļām.

piekļuves_modifikatora_veidi

Apspriedīsim to pa vienam

1. Publiskais precizētājs

Publiskais precizētājs padara klases dalībniekus (mainīgos un funkcijas) pieejamus no jebkuras vietas - klasē ārpus klases vai pat citiem failiem.

2. Privāts norādītājs

Privātais specifikators padara klases dalībniekus pieejamus tikai pašā klasē (galvenokārt dalībnieku metodes) un galvenokārt tiek izmantots, lai paslēptu datus no ārpuses, lai mēs vēlāk varētu veikt izmaiņas iekšēji, nemainot tās lietotāju kodu. Pēc noklusējuma visi klases dalībnieki programmā C++ ir privāti, ja nav minēts neviens precizētājs.

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

Izvade
Name: Fedrick  

Kas notiek, ja mēģināsim piekļūt privātajiem dalībniekiem?

Kods rada kompilatora kļūdu, kā redzams zemāk.

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

Izvade

 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. Aizsargāts precizētājs

  • Aizsargātais specifikators padara dalībniekus pieejamus pašā klasē un tajā atvasināts (bērnu) klasēm, bet ne veido ārpus koda.
  • To galvenokārt izmanto mantojumā, ļaujot bērnu klasēm atkārtoti izmantot vai modificēt datus un funkcijas, vienlaikus paturot tos paslēptus no ārpasaules.
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  ;   }   

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


Piezīme : šī piekļuve, izmantojot mantojumu, var mainīt atvasinātās klases bāzes klases elementu piekļuves modifikatoru atkarībā no mantojuma veids .

Izveidojiet viktorīnu