Merhaba,
Bugün çok ilginç bir konuya girdik. Başlangıcı şurada alevlenmişti: http://ddili.org/forum/post/9470
Konuyu assembly kodlarını inceleyerek devam ettirmek istiyorum. Ama çok vaktim yok ve hepsini hemen şimdi aktaramayabilirim. Elimden geldiğince çok bilgi aktarmak istiyorum bakalım ne yapabiliriz...:)
Önce vtbl denen şey nedir ona bakalım ve geriye doğru gidelim:
Alıntı:
_D9interface4Kedi6__vtblZ:
dd offset FLAT:_D9interface4Kedi7__ClassZ@SYM32
dd offset FLAT:_D6object6Object8toStringMFZAya@SYM32
dd offset FLAT:_D6object6Object6toHashMFNbNeZk@SYM32
dd offset FLAT:_D6object6Object5opCmpMFC6ObjectZi@SYM32
dd offset FLAT:_D6object6Object8opEqualsMFC6ObjectZb@SYM32
dd offset FLAT:_D6object6Object8opEqualsMFC6ObjectC6ObjectZb@SYM32
dd offset FLAT:_D9interface4Kedi11sesÇıkartMFZv@SYM32
db 068h,061h,076h,000h ;hav.
İşte böyle bir şey ama örneğimizdeki Köpek için de bir şey değişmiyor. Sadece Kedi yazan yerlerde Köpek yazıyor; hepsi bu kadar.Tamamen aynı gibi görünüyor ve aslında bu bir durağan (static) veritabanı. Sınıfların override edilebilecek gizli işlevlerini ve 1 adet kendi işlevimizi açıkca görmekteyiz.
Dip Not: Kedi sınıfına ait VTBL'de neden "hav" dizgesi tanımlanmış bilmiyorum. Bu konuda çok karışık şeyler var ama anlayacağız. Bu arada _D9interface, aslında benim dosya ismimden (interace.d) geliyor. Oradaki interface sınıfı ile alakalı değildir.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]