Pasiekite modifikatorius C++

Pasiekite modifikatorius C++

Prieigos modifikatoriai yra specialius raktinius žodžius C++ kalba, kuri kontroliuoja klasės narių (duomenų ir funkcijų) matomumą.
Jie padeda įgyvendinti duomenų slėpimą, apribodami arba suteikdami prieigą prie tam tikrų klasės dalių.

prieigos_modifikatoriaus_ tipai

Aptarkime tai po vieną

1. Viešasis specifikatorius

Viešasis specifikatorius leidžia pasiekti klasės narius (kintamuosius ir funkcijas) iš bet kurios vietos – klasės viduje, už klasės ribų ar net kitų failų.

2. Privatus Specifikatorius

Privatus specifikatorius leidžia klasės narius pasiekti tik pačioje klasėje (daugiausia narių metodai) ir daugiausia naudojamas duomenims paslėpti iš išorės, kad vėliau galėtume atlikti pakeitimus viduje, nekeisdami jos vartotojų kodo. Pagal numatytuosius nustatymus visi klasės nariai C++ yra privatūs, jei nepaminėtas joks specifikatorius.

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

Išvestis
Name: Fedrick  

Kas nutiks, jei bandysime pasiekti privačius narius?

Kodas pateikia kompiliatoriaus klaidą, kaip matome toliau.

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

Išvestis

 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. Apsaugotas specifikatorius

  • Apsaugotas specifikatorius leidžia pasiekti narius pačioje klasėje ir joje išvestinė (vaikų) klasėse, bet nesudaro išorinio kodo.
  • Jis daugiausia naudojamas paveldėjimui, leidžiantis vaikų klasėms pakartotinai naudoti arba modifikuoti duomenis ir funkcijas, tuo pačiu išlaikant juos paslėptus nuo išorinio pasaulio.
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  ;   }   

Išvestis
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102  


Pastaba : ši prieiga per paveldėjimą gali pakeisti bazinės klasės elementų prieigos modifikatorių išvestinėje klasėje, atsižvelgiant į paveldėjimo būdas .

Sukurti viktoriną

Jums Gali Patikti