C++'da kalıtımla çalışma

Bu eğitimde hakkında konuşacağız C++ kalıtım, çok ilginç bir konu, basit bir örnek üzerinden görelim. Windows kullananlar için bir IDE programı indirebilirsin, bu programları derlemene ve çalıştırmana yardımcı olacaktır, linki aşağıya bırakıyoruz:

DEVC++

Burada Linux'u, özellikle de C++ için bir derleyicisi olan Ubuntu'yu kullanacağız. C++ dili, muhtemelen herkesin bildiği gibi, Java'dan farklı olarak, yalnızca basit kalıtıma izin veren ve benzer bir şey istiyorsak arayüzleri çekmemiz gereken, sonuçta hatalara daha az eğilimli olan Java'nın aksine, çoklu kalıtsallığa izin verir.

C++'da kalıtımı görmek için burada göstereceğimiz ana örnek basittir, sonunda etkilenebileceğimiz bir hata gösterme dışında, çoklu kalıtım içine girmeyeceğiz.

1. C++'da basit kalıtım


İlk örnek olan basit kalıtımı başlatmak için bir sınıfımız olacak. Hayvantemel sınıfımız veya ebeveynimiz olacak , ve devralacak 2 sınıf, Köpek herhangi bir kodu olmayacak ve Kedi bu, ana sınıfa yeni bir parametre ekleyecektir. Kodu görelim (kısa):
 #include ad alanı std kullanarak; sınıf Hayvan {özel: int yaş; public: Animal (int a = 1) {yaş = a; }; int getAge () const {dönüş yaşı;} void setAge (int a = 9) {yaş = a; }}; sınıf Köpek: halka açık Hayvan {}; sınıf Kedi: genel Hayvan {özel: yüzer ağırlık; public: Kedi (int a = 2, float w = 3.2): Animal (a) {ağırlık = w; } float getWeight () const {dönüş ağırlığı;}}; int main () {Köpek mastin; cout << "____DOG____" << endl; cout << "Önce:" << mastin.getAge () << endl; mastin.setAge (2); cout << "Sonra:" << mastin.getAge () << endl; Kedi miyavlaması (3, 4.1); cout << "____CAT____" << endl; cout << meow.getAge () << "" << meow.getWeight () << endl; } 
Kalıtım konularını görmek için zaten bazı C++ bildiğinizi varsayıyoruz ve bu nedenle işlevlerin bölümlerini veya genel ve özel bölümleri açıklamayacağız. Bir sınıftan miras almak için aşağıdaki sözdizimine sahibiz:
 sınıf kızı_sınıfı: genel parent_class
Yani sınıfı oluşturmak için örneğimizde Köpek kullandık:
 sınıf Köpek: halka açık Hayvan
Belirtir Köpek Animal sınıfından miras alır, Animal sınıfının public veya protected bloklarında sahip olduğu her şeyi kullanabiliriz, ancak private bloğu kullanırsak bir hata alırız. İyi sınıf Köpek boştur, bu nedenle büyük bir zorluğu yoktur.

sınıfa gidersek Kedi, öncekiyle aynı sınıf bildirimine sahibiz, bunun dışında yeni bir değişken eklediğini görüyoruz. ağırlık, bu değişken ne ona ne de sınıfa sahip Hayvan, hiç biri Köpek. Burada sınıfın yapıcısında ana sınıfın yapıcısını çağırdık, bu nedenle değişken için verileri iletiyoruz. yaş, ve ayrıca değişkeni de doldururuz ağırlık.

NotFonksiyonlara ilettiğimiz parametrelerin varsayılan bir değere sahip olabileceğini görebilirsiniz.

İçinde ana sınıfın bir nesnesini yaratıyoruz Köpek, varsayılan olarak yaşı bırakıp gösteriyoruz, sonra işlevi kullanıyoruz setYaş yaşı değiştirmek ve tekrar göstermek için. Sonunda sınıfın bir nesnesini oluşturuyoruz Kedi, ve bu sefer değişkenlerin varsayılan bir değere sahip olmasına izin vermiyoruz ve bunları nesneyi oluştururken onlara aktarıyoruz ve değişmemek için onları gösteriyoruz.

Eğer istersek bu kodu g ++ ile bir linux terminalinde çalıştırın, aşağıdakileri yapıyoruz:

 g ++ -o testi tesc.gcc
Ve çalıştırmak için çok kolay:
 ./Ölçek
Küçük kodun derlenmesi ve yürütülmesi ile bir yakalama göstereceğiz:

2. C++'da çoklu kalıtım


onları görmek çoklu kalıtımın tehlikeleri çok küçük bir kod bırakacağız:
 #include ad alanı std kullanarak; class Animal {public: void walk () {cout << "Hayvanda Yürümek" << endl; }}; class Mammal {public: void walk () {cout << "Memelide Yürümek" << endl; }}; sınıf Köpek: public Animal, public Memeli {}; int main() {Köpek köpek; Köpek yürüyüşü (); } 
bunu görüyoruz Köpek miras Hayvan Y Memelive her iki sınıf da aynı işleve sahiptir yürümek, koddaki gibi normal işlevi kullanırsam:
 Köpek yürüyüşü ()
Derliyoruz ve aşağıdaki hatayı alıyoruz:

Bunu çözmek için, işlevi çağırmak için aşağıdaki sözdizimini kullanabiliriz. Hayvan:

 dog.Hayvan :: yürü ();
veya sınıfı kullanmak için Memeli:
 dog.Mamifero :: yürü ();
Ve tabi ki en iyi çözüm aynı isimde 2 fonksiyona birden sahip olmamaktır, eğer çoklu kalıtımdan faydalanacaksak bu programda çözmek çok kolay ama büyük bir tanesinde baş ağrısına dönüşebilir.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave