Käytä modifioijia C++:ssa

Käytä modifioijia C++:ssa

Pääsyn muokkaajat ovat erityisiä avainsanoja C++:ssa, jotka ohjaavat luokan jäsenten näkyvyyttä (data ja funktiot).
Ne auttavat toteuttamaan tietojen piilottamista rajoittamalla tai sallimalla pääsyn tiettyihin luokan osiin.

käyttömuodon_tyypit

Keskustellaan siitä yksitellen

1. Julkinen määrittäjä

Julkinen täsmennys mahdollistaa luokan jäsenten (muuttujien ja funktioiden) pääsyn mistä tahansa - luokan sisällä luokan ulkopuolelta tai jopa muista tiedostoista.

2. Yksityinen määrittäjä

Private specifier tekee luokan jäsenistä pääsyn vain luokan sisällä (pääasiassa jäsenmetodeissa) ja sitä käytetään pääasiassa tietojen piilottamiseen ulkopuolelta, jotta voimme myöhemmin tehdä muutoksia sisäisesti muuttamatta sen käyttäjien koodia. Oletusarvoisesti kaikki luokan jäsenet C++:ssa ovat yksityisiä, jos määrittäjää ei mainita.

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

Lähtö
Name: Fedrick  

Mitä tapahtuu, jos yritämme päästä yksityisiin jäseniin?

Koodi antaa kääntäjävirheen, kuten näemme alla.

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

Lähtö

 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. Suojattu määrittäjä

  • Suojattu määrittäjä tekee jäsenistä pääsyn itse luokassa ja sen sisällä johdettu (lapsi) luokkiin, mutta ei ulkopuolista koodia.
  • Sitä käytetään pääasiassa perinnössä, jolloin lapsiluokat voivat käyttää uudelleen tai muokata tietoja ja toimintoja pitäen ne silti piilossa ulkomaailmalta.
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  ;   }   

Lähtö
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102  


Huom : Tämä pääsy periytymisen kautta voi muuttaa johdetun luokan perusluokan elementtien käyttöoikeusmuunninta riippuen perintötapa .

Luo tietokilpailu