C++'da Erişim Değiştiricileri

C++'da Erişim Değiştiricileri

Erişim değiştiriciler özel anahtar kelimeler C++'da sınıf üyelerinin (veriler ve işlevler) görünürlüğünü kontrol eden.
Bir sınıfın belirli bölümlerine erişimi kısıtlayarak veya bunlara erişime izin vererek veri gizlemenin uygulanmasına yardımcı olurlar.

type_of_access_modifier

Tek tek tartışalım

1. Genel Belirleyici

Genel belirtici, sınıf üyelerine (değişkenler ve işlevler) her yerden (sınıfın içinden, sınıfın dışından ve hatta diğer dosyalardan) erişilebilir hale getirir.

2. Özel Belirleyici

Özel belirtici, sınıf üyelerine yalnızca sınıfın içinden erişilebilmesini sağlar (temel olarak üye yöntemleri) ve esas olarak verileri dışarıdan gizlemek için kullanılır, böylece daha sonra kullanıcılarının kodunu değiştirmeden dahili olarak değişiklikler yapabiliriz. Herhangi bir belirtici belirtilmemişse, varsayılan olarak C++'daki tüm sınıf üyeleri özeldir.

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

Çıkış
Name: Fedrick  

Özel üyelere erişmeye çalışırsak ne olur?

Kod aşağıda göreceğimiz gibi derleyici hatası veriyor.

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

Çıkış

 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. Korumalı Belirleyici

  • Korumalı belirtici, üyelerin sınıfın içinden ve sınıfın içinden erişilebilir olmasını sağlar. türetilmiş (çocuk) sınıfları ancak dış kod oluşturmaz.
  • Esas olarak kalıtımda kullanılır ve alt sınıfların verileri ve işlevleri yeniden kullanmasına veya değiştirmesine izin verirken bunları dış dünyadan gizli tutar.
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  ;   }   

Çıkış
Employee Name: Fedrick Manager Name: Rohit Manager ID: 102  


Not : Kalıtım yoluyla bu erişim, türetilmiş sınıftaki temel sınıfın elemanlarının erişim değiştiricisini, Miras Modu .

Test Oluştur