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.
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.
#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
Test OluşturNot : 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 .