C ++ Erişim Değiştiricileri

Bu eğitimde, örnekler yardımıyla C ++ sınıfları için erişim değiştiricileri öğreneceğiz. C ++ erişim değiştiricileri genel, özel ve korumalıdır.

C ++ gibi nesne yönelimli programlama dillerinin temel özelliklerinden biri veri gizlemedir .

Veri gizleme, bir sınıfın veri üyelerine erişimi kısıtlamayı ifade eder. Bu, diğer işlevlerin ve sınıfların sınıf verilerini kurcalamasını önlemek içindir.

Ancak, gizli verilerin dolaylı olarak işlenebilmesi için bazı üye işlevlerinin ve üye verilerinin erişilebilir hale getirilmesi de önemlidir.

C ++ 'ın erişim değiştiricileri, hangi sınıf üyelerinin diğer sınıflar ve işlevler için erişilebilir olduğunu ve hangilerinin olmadığını belirlememizi sağlar.

Örneğin,

 class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) ); 

Burada, sınıfa ait hasta numarası ve tanı değişkenleri anahtar sözcük Patientkullanılarak gizlenirken private, üye işlevler publicanahtar sözcük kullanılarak erişilebilir hale getirilir .

C ++ Erişim Değiştirici Türleri

C ++ 'da 3 erişim değiştirici vardır:

  • public
  • private
  • protected

genel Erişim Değiştirici

  • publicAnahtar kelime kamu üyelerini (veri ve işlevleri) oluşturmak için kullanılır.
  • Genel üyelere programın herhangi bir bölümünden erişilebilir.

Örnek 1: C ++ genel Erişim Değiştirici

 #include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )

Çıktı:

 Yaşınızı girin: 20 Yaş = 20

Bu programda, değişken yaş ve fonksiyon Sampleiçeren bir sınıf oluşturduk .publicpublicdisplayAge()

İçinde main(), Sampleobj1 adında bir sınıf nesnesi oluşturduk . Daha sonra genel öğelere doğrudan kodlarını kullanarak erişiriz obj.ageve obj.displayAge().

özel Erişim Değiştirici

  • privateAnahtar kelime özel üye (veri ve işlevleri) oluşturmak için kullanılır.
  • Özel üyelere yalnızca sınıf içinden erişilebilir.
  • Ancak, arkadaş sınıfları ve arkadaş işlevleri özel üyelere erişebilir.

Örnek 2: C ++ özel Erişim Tanımlayıcısı

 #include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )

Çıktı:

 Yaşınızı girin: 20 Yaş = 20

İçinde main(), obj1 nesnesi yaş sınıf değişkenine doğrudan erişemez.

 // error cin>> obj1.age;

Yaşı ancak dolaylı olarak public işlevi aracılığıyla değiştirebiliriz displayAge(), çünkü bu işlev kendisine geçirilen argümana yaş atar, yani işlev parametresi int a.

korumalı Erişim Değiştirici

protectedErişim tanımlayıcısını öğrenmeden önce , C ++ 'da kalıtım hakkında bilgi sahibi olduğunuzdan emin olun.

  • protectedAnahtar kelime korumalı üyeleri (veri ve fonksiyon) oluşturmak için kullanılır.
  • Korunan üyelere sınıf içinden ve türetilmiş sınıftan erişilebilir.

Örnek 3: C ++ korumalı Erişim Belirteci

 #include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )

Çıktı:

 Yaşınızı girin: 20 Yaş = 20

Burada, ChildSampletüretilen miras alınan bir sınıftır Sample. Değişken yaş bildirilmiştir Sampleile protectedanahtar kelime.

Bu , ebeveyn sınıfı olduğu için ChildSampleyaşa erişebileceği anlamına gelir Sample.

Bunu ChildSample, Samplesınıfta yaş beyan edilmesine rağmen yaşın değerini verdiğimiz için görüyoruz .

Özet: genel, özel ve korumalı

  • public öğelerine diğer tüm sınıflar ve işlevler tarafından erişilebilir.
  • privateöğelere, friendsınıflar ve işlevler dışında bildirildikleri sınıfın dışından erişilemez .
  • protectedelemanlar, privatetüretilmiş sınıflar tarafından erişilebilmeleri dışında , tıpkı gibidir .
Tanımlayıcılar Aynı sınıf Türetilmiş sınıf Sınıf Dışı
public Evet Evet Evet
private Evet Hayır Hayır
protected Evet Evet Hayır

Not: Varsayılan olarak private, aksi belirtilmedikçe C ++ 'daki sınıf üyeleri vardır .

Ilginç makaleler...