C++ İşlevini Geçersiz Kılma

C Function Overriding



Bu yazıda, C++ programlama dilinde fonksiyon geçersiz kılmayı ele alacağız. C++, çalışma zamanı polimorfizmini destekler.

İşlev geçersiz kılmada, alt sınıf, üst sınıfında zaten tanımlanmış olan işlevi yeniden tanımlar.







Programcının türetilmiş sınıfa özgü işlevsellik sağlamasını sağlar (temel sınıfta tanımlanmış olsa bile).



Şimdi birkaç örnek göreceğiz ve C++'da fonksiyon geçersiz kılma kavramını anlayacağız.



Örnek 1

Aşağıdaki örnek kodda iki sınıf tanımladım – bir temel sınıf ve bir türetilmiş sınıf. Temel sınıfın bir üye işlevi vardır, yani disp(). Derived_Class, Base_Class'tan miras alınır. disp() işlevi Base_Class'ta bulunur ve ardından Derived_Class'ta yeniden tanımlanır.





main() işlevinde, bir Derived_Class nesnesi, yani d oluşturulur. Daha sonra türetilmiş sınıf nesnesinde disp() işlevini çağırırız, böylece türetilmiş sınıftaki işlev çağrılır. Temel sınıf versiyonu burada yok sayılır. Aşağıdaki çıktıyı, türetilmiş sınıfta – disp() işlevi olarak görebilirsiniz.

#Dahil etmek

ad alanı std kullanarak;

//temel sınıf
sınıf Temel_Sınıf
{
halka açık:
geçersizboşuna()
{
maliyet<< 'temel sınıfta disp() işlevi.' <<son;
}

};

//Türetilmiş sınıf
sınıf Derived_Class:genel Base_Class
{
halka açık:
geçersizboşuna()
{
maliyet<< 'türetilmiş sınıfta disp() işlevi' <<son;
}
};

intana()
{
Derived_Class d;
NS.boşuna(); // türetilmiş sınıf nesnesindeki disp() işlevi
dönüş 0;
}



Örnek-2

Bu örnekte, türetilmiş sınıf nesnesi aracılığıyla işlevin temel sınıf sürümünün kasıtlı olarak nasıl çağrılacağını göreceğiz. Türetilmiş sınıf işlevi tanımında, işlevin temel sınıf sürümünü çağırmak için kapsam çözümleme operatörünü [::] kullanırız.

#Dahil etmek

ad alanı std kullanarak;

sınıf Temel_Sınıf
{
halka açık:
geçersizboşuna()
{
maliyet<< 'temel sınıfta disp() işlevi.' <<son;
}

};

sınıf Derived_Class:genel Base_Class
{
halka açık:
geçersizboşuna()
{
Temel_Sınıf::boşuna(); // disp()'in temel sınıf sürümünü çağırın
}
};

intana()
{
Derived_Class d;
NS.boşuna();
dönüş 0;
}

Örnek-3

Bu, işlevi geçersiz kılmanın başka bir örneğidir. Bu örnekte, bir ana sınıf oluşturduk – Animal ve iki türetilmiş sınıf – Duck ve Dog. Temel sınıf, yani Animal sınıfı, sound() üye işlevine sahiptir.

Türetilmiş sınıf/alt sınıfta, yani Dog, temel sınıf tanımını geçersiz kılmak için aynı işlevi, yani sound()'u yeniden tanımladık. Benzer şekilde, diğer türetilmiş sınıfta, yani Duck'ta, aynı işlevi, yani sound()'u yeniden tanımladık.

main() fonksiyonunda Dog ve Duck of Duck'ın dog nesnesini yarattık. Şimdi, köpek ve ördek için sound() fonksiyonunu çağırdığımızda, sound() fonksiyonunun türetilmiş sınıf versiyonu çağıracak. Programın çıktısını aşağıda gösterildiği gibi görebilirsiniz. Böylece, geçersiz kılma işlevinin yardımıyla, türetilmiş sınıfa özgü işlevi çağırabiliriz.

#Dahil etmek

ad alanı std kullanarak;

sınıf Hayvan
{
halka açık:
geçersizses()
{
maliyet<< 'Hayvan sesi!' <<son;
}

};

// Türetilmiş sınıf – Köpek sınıfı
sınıf köpek:kamu Hayvan
{
halka açık:
geçersizses()
{
maliyet<< 'Köpek sesi - havlama.' <<son;
}
};

// Türetilmiş sınıf – Ördek sınıfı
sınıf ördek:kamu Hayvan
{
halka açık:
geçersizses()
{
maliyet<< 'Ördek sesi - vak.' <<son;
}
};


intana()
{
Köpek köpek;
ördek ördek;

köpek.ses(); // köpeğin sesi()
ördek.ses(); // ördek sesi()

dönüş 0;
}

Çözüm

Bu yazımda fonksiyon geçersiz kılmayı anlattım. C++ . C++ dili, çalışma zamanı polimorfizmini destekler. İşlev geçersiz kılma, C++'da çalışma zamanı polimorfizminin elde edilmesine yardımcı olur. Bu makale, işlev geçersiz kılma kavramına ve işlev geçersiz kılma kullanılarak çalışma zamanı polimorfizminin nasıl elde edileceğine baktı.