C++

C++ Erişim Belirticileri

C++ Erişim Belirticileri
C++'da sınıf, birlikte çalışmak üzere yapılandırılmış bir dizi değişken ve işlevdir. Sınıfın değişkenlerine değer verildiğinde bir nesne elde edilir. Bir nesne, bir sınıfla aynı değişkenlere ve işlevlere sahiptir, ancak bu sefer değişkenlerin değerleri vardır. Bir sınıftan birçok nesne oluşturulabilir. Bir nesne, diğer nesnenin değişkenlerine atanan farklı değerler kümesine göre diğer nesneden farklıdır. Bir sınıftan nesne yaratmanın, nesneyi somutlaştırmak olduğu söylenir. İki farklı nesne değişkenleri için aynı değerlere sahip olsa bile, bu nesneler programda farklı isimlerle tanımlanan farklı varlıklardır. Bir nesnenin ve ilgili sınıfının değişkenlerine veri üyeleri denir. Bir nesnenin işlevlerine ve ona karşılık gelen sınıfa üye işlevler denir. Veri üyelerine ve üye işlevlerine üye denir.

Erişim kelimesi, bir değişkenin değerini okumak veya değiştirmek anlamına gelir ve aynı zamanda bir işlevi kullanmak anlamına gelir. C++ erişim belirteçleri, "özel", "korumalı" ve "genel" kelimeleridir.Bir üyenin sınıfının diğer üyelerine erişip erişemeyeceğine veya sınıf dışından ve sınıfa ait olmayan bir işlev veya operatörün sınıfın herhangi bir üyesine erişip erişemeyeceğine karar verirler. Ayrıca türetilmiş (alt) sınıfın bir üyesinin bir üst sınıfın bir üyesine erişip erişemeyeceğine de karar verirler.

Bu makaleyi anlamak ve sağlanan kodu test etmek için temel C++ bilgisi gereklidir.

Makale İçeriği

Genel ve Özel Belirticiler

Sınıf
Bir sınıfın herhangi bir üyesi, “genel” veya “özel” olarak etiketlenmiş olandan bağımsız olarak, aynı sınıfın diğer herhangi bir üyesine erişebilir.Aşağıdaki programı göz önünde bulundurun:

#Dahil etmek
ad alanı std kullanarak;
sınıf TheCla

özel:
int sayı1;
int sayı2;
halka açık:
TheCla(int n1, int n2)

sayı1 = n1; sayı2 = n2;

int yöntemi()

geri sayı1;

;
int ana()

TheCla nesnesi(10, 20);
int no2 = nesne.yöntem();
cout<//int no1 = nesne.num1;
0 döndür;

çıktı 10. Özel üyeler num1 ve num2'dir. Genel üyeler TheCla() ve  method()'dur. TheCla()'nın ilgilenilen değişkenleri başlatan yapıcı işlev olduğuna dikkat edin. Bir erişim belirtecinin bölgesi, etiketinden sınıf tanımının (tanım) sonuna veya başka bir erişim belirtecinin başlangıcına kadar başlar.

main() işlevinde, ilk ifade, num1 ve num2'yi başlatan yapıcı işlevini içeren örneklemedir. Sonraki ifade, sınıfın genel üyesi olan method()'u çağırır.

Şimdi, sınıf açıklamasında (tanım), genel üye işlevi TheCla(), özel üyelere, num1 ve num2'ye erişir. Ayrıca, genel üye işlevi olan method(), özel üyeye (num1) erişir. Bir sınıf tanımındaki herhangi bir üye, aynı sınıf tanımındaki diğer herhangi bir üyeye erişebilir; hangi üyenin özel veya kamu olduğu önemli değil.

Ancak, sınıf tanımında ve sınıf tanımının dışında bildirilmeyen bir işlev veya operatör, yalnızca sınıfın genel üyelerine erişebilir. Örneğin main() işlevi, sınıf tanımının dışında bildirilen bir işlevdir. Yalnızca method() ve TheCla() genel üyelerine erişebildi. main() işlevinin içinde, TheCla() işlevi obj(10, 20) şeklindedir.

main() işlevi gibi bir dış işlev veya dış işleç, sınıfın num1 veya num2 gibi özel üyelerinden hiçbirine erişemez. main() içindeki son bir ifadeden //, yorum göstergesini kaldırın. Programı derlemeye çalışırsanız, programın derlenmeyeceğini ve bir hata mesajı verdiğini unutmayın.

Varsayılan Tanımlayıcı
Bir sınıf için varsayılan belirteç "private"dir.” Dolayısıyla, yukarıdaki sınıf açıklaması aşağıdaki açıklama ile aynıdır, özeldir, ancak belirteci yoktur:

sınıf TheCla

int sayı1;
int sayı2;
halka açık:
TheCla(int n1, int n2)

sayı1 = n1; sayı2 = n2;

int yöntemi()

geri sayı1;

;

Not: erişim belirteci etiketi, belirteçle başlar ve ardından iki nokta üst üste gelir.

Korumalı Belirtici

Bir sınıf tanımı içinde ve bir dış fonksiyondan veya dış operatörden, korunan belirteç özel belirteçle aynıdır. Şimdi, yukarıdaki programdaki özel belirteci belirteçle değiştirin, koruyun ve yorum göstergesini //, main() işlevindeki son bir ifadeden kaldırın. Programı derlemeye çalışırsanız, programın derlenmeyeceğini ve bir hata mesajı verdiğini unutmayın.

Türetilmiş (devralınan) sınıfın üyelerinin temel (ana) sınıfın üyelerine erişmesi gerektiğinde, korumalı belirteç sorunu ortaya çıkar.

Genel Türetilmiş Sınıf Kamu Üyeleri ile
Aşağıdaki programı göz önünde bulundurun:

#Dahil etmek
ad alanı std kullanarak;
sınıf TheCla

halka açık:
int sayı1 = 10;
korumalı:
int sayı2 = 20;
özel:
int sayı3 = 30;
;
sınıf ChildCla : genel TheCla

halka açık:
int yöntem1()

geri sayı1;

int yöntem2()

geri sayı2;

/*int yöntem3()

num3'ü döndür;
*/
;
int ana()

ChildCla childObj;
int no1 = childObj.Yöntem 1();
cout<int no2 = childObj.yöntem2();
cout<0 döndür;

Çıktı:
10
20

Temel sınıfta, num1 geneldir, num2 korumalıdır ve num3 özeldir. Türetilmiş sınıfta, tüm üye işlevler geneldir. İlk işlev, method1(), genel veri üyesine erişir, num1. İkinci işlev, method2(), korunan veri üyesine erişir, num2. Üçüncü işlev, method3(), şu anda yorumlanmış olsa da, num3 özel veri üyesine erişmelidir.

Türetilmiş bir sınıf, erişim belirteci (genel, korumalı veya özel) olmadan bildirilmez. Yukarıda, türetilmiş sınıf, genel belirteçle bildirilir, yani:

sınıf ChildCla : genel TheCla

Şimdi türetilmiş sınıftaki üçüncü üye işlev tanımının yorumunu kaldırın. Programı derlemeye çalışırsanız derlenmeyeceğine ve hata mesajı verdiğine dikkat edin.

Not: Türetilmiş sınıfın tamamı public olarak bildirildiğinde, üyeleri temel sınıfın özel üyelerine erişemez. Ancak üyeleri, temel sınıfın genel ve korumalı üyelerine erişebilir. Yukarıdaki program bunu göstermektedir.

Ancak, genel türetilmiş sınıfın genel bir üyesinin, temel sınıfın korumalı bir üyesine erişebileceğini unutmayın.

Türetilmiş Sınıf Belirticiler ve Üye Belirticiler

Genel Üyelerle Korumalı Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "public" belirtecini "protected" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : korumalı TheCla

Programı derleyin ve çalıştırın ve sonucun öncekiyle aynı olduğunu unutmayın.

Bu nedenle, türetilmiş sınıfın tamamı korumalı olarak bildirildiğinde, üyeleri temel sınıfın özel üyelerine erişemez. Ancak üyeleri, temel sınıfın genel ve korumalı üyelerine erişebilir. Bu, türetilmiş sınıfın genel ilan edildiği zamankiyle aynıdır.

Not: genel türetilmiş sınıfın korumalı bir üyesi, temel sınıfın korumalı bir üyesine erişebilir.

Genel Üyelerle Özel Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "korumalı" belirteci "özel" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : özel TheCla

Programı derleyin ve çalıştırın ve sonucun öncekiyle aynı olduğunu unutmayın.

Bu nedenle, türetilmiş sınıfın tamamı özel olarak bildirildiğinde, üyeleri temel sınıfın özel üyelerine erişemez. Ancak üyeleri, temel sınıfın genel ve korumalı üyelerine erişebilir. Bu, türetilmiş sınıfın korumalı veya genel olarak bildirilmesiyle aynıdır.

Korumalı Üyelerle Genel Türetilmiş Sınıf
Tüm türetilmiş sınıfın ve üyelerinin de korunduğu aşağıdaki programı yazın, derleyin ve çalıştırın. Bazı kod bölümleri aşağıdaki gibidir:

#Dahil etmek
ad alanı std kullanarak;
sınıf TheCla

halka açık:
int sayı1 = 10;
korumalı:
int sayı2 = 20;
özel:
int sayı3 = 30;
;
sınıf ChildCla : genel TheCla

korumalı:
int yöntem1()

geri sayı1;

int yöntem2()

geri sayı2;

/*int yöntem3()

num3'ü döndür;
*/
;
int ana()

/*ChildCla childObj;
int no1 = childObj.Yöntem 1();
cout</*int no2 = childObj.yöntem2();
cout<0 döndür;

Program olduğu gibi çalışıyor. Çıktı yok ve programın nasıl yazıldığına bağlı olarak herhangi bir çıktı olması gerekmiyor.

Şimdi, türetilmiş sınıftaki method3() fonksiyon tanımının yorumunu kaldırın. Programı derlemeye çalışırsanız derlenmeyeceğine ve hata mesajı verdiğine dikkat edin. Bu, özel bir üyeye bir dış işlevden, dış operatörden veya türetilmiş sınıftan erişilemeyeceği anlamına gelir. Bu, özel bir üyeye erişimle ilgili olarak yukarıda varılanla aynı sonuçtur.

Not: korumalı türetilmiş sınıfın korumalı bir üyesi, temel sınıfın korumalı bir üyesine erişebilir.

Şimdi, yorumları türetilmiş sınıfa geri koyun ve main() işlevindeki ilk kod parçasının yorumunu kaldırın. Programı derlemeye çalışırsanız, main() işlevindeki ilk kod parçası nedeniyle programın derlenmeyeceğini unutmayın. Bu etki yeni değil. Türetilmiş sınıf, dış işlevler ve dış işleçler dışında, bir (temel veya türetilmiş) sınıfın korumalı ve özel üyeleri aynı belirteçtir, özel. main() işlevi, ister temel ister türetilmiş olsun, aynı belirticiye göre herhangi bir sınıfın korumalı üyesini özel olarak görür ve ona erişmesi yasaktır.

main() işlevinin ikinci kod parçası yorumlanmamışsa, aynı açıklama geçerli olacaktır. Yani, main() işlevi, türetilmiş sınıfın veya temel sınıfın korumalı veya özel bir üyesine erişemez. Bu, türetilmiş sınıfın korumalı bir üyesinin temel sınıfın korumalı bir üyesine erişip erişemeyeceğinden bağımsızdır.

Korumalı Üyelerle Korumalı Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "public" belirtecini "protected" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : korumalı TheCla

Bu daha önce yapılmadıysa, kod bölümlerinin yorumunu main() işlevine geri koyun. Programı derleyin ve çalıştırın ve sonucun eskisi gibi olduğunu unutmayın.

Korumalı Üyelerle Özel Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "korumalı" belirteci "özel" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : özel TheCla

Programı derleyin ve çalıştırın ve sonucun eskisi gibi olacağını unutmayın.

Özel Üyelerle Genel Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "private" belirtecini "public" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : genel TheCla

Türetilmiş sınıfın üyelerini özel yap. Programı derleyin ve çalıştırın. Sonuç, “Korunan Üyelerle Kamudan Türetilmiş Sınıf” davasından farklı değil.

Özel Üyelerle Korumalı Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "public" belirtecini "protected" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : korumalı TheCla

Programı derleyin ve çalıştırın. Bu sonuç, “Korumalı Üyeleri ile Korumalı Türetilmiş Sınıf” davasından farklı değildir.

Özel Üyelerle Özel Türetilmiş Sınıf
Yukarıdaki türetilmiş sınıfın bildiriminde "korumalı" belirteci "özel" ile aşağıdaki gibi değiştirin:

sınıf ChildCla : özel TheCla

Programı derleyin ve çalıştırın. Bu sonucun “Korunan Üyeleri Olan Özel Türetilmiş Sınıf” davasından farkı yoktur.

Sonuç

C++ erişim belirteçleri, "özel", "korumalı" ve "genel" kelimeleridir.Bir sınıfın üyeleri için erişime karar verirler. Bir erişim belirtecinin bölgesi, etiketinden, sınıf tanımının (tanım) sonuna veya başka bir erişim belirtecinin başlangıcına kadar başlar. Bir sınıfın herhangi bir üyesi, aynı sınıfın diğer herhangi bir üyesine erişebilir. Bir sınıfın özel üyesine herhangi bir dış işlev, herhangi bir dış operatör veya türetilmiş bir sınıf tarafından erişilemez.

Temel sınıfın üyesi, türetilmiş sınıfın bir üyesi tarafından temel sınıfın özel bir üyesine erişilebilmesi için korumalı hale getirilmelidir. Temel sınıfın bu korumalı üyesi, bir dış işlev veya bir dış operatör tarafından temel sınıfın özel bir üyesi olarak görülür.

Bir sınıfın genel üyesine herhangi bir dış işlev, herhangi bir dış operatör veya türetilmiş bir sınıf tarafından erişilebilir.

Bir sınıfta herhangi bir erişim belirteci yoksa, özel belirtecin olduğu varsayılır. Yani, varsayılan erişim belirteci özeldir.

Bu Çalışmada Kullanılan Referanslar

  • Alireza Ebrahimi, MİRAS: YENİDEN KULLANILABİLİRLİK VE GENİŞLETİLEBİLİRLİK
  • S. Malik, C++ 2. Sürüm Kullanan Veri Yapıları
Linux'ta Fare Tıklamalarını ve Tuş Vuruşlarını Teşvik Etmek İçin Xdotool Nasıl Kullanılır?
Xdotool, fare tıklamalarını ve tuş vuruşlarını simüle etmek için ücretsiz ve açık kaynaklı bir komut satırı aracıdır. Bu makale, klavye ve fare girişl...
Linux için En İyi 5 Ergonomik Bilgisayar Faresi Ürünleri
Uzun süreli bilgisayar kullanımı bileğinizde veya parmaklarınızda ağrıya neden olur mu?? Sert eklemlerden muzdarip misiniz ve sürekli ellerinizi sıkma...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...