saf sanal işlevlerin tanımlanması – 3

Taban sınıf, kendisinden kalıtım yoluyla elde edilecek türemiş sınıflara bir operasyon için bir arayüz ve bu arayüze ilişkin türemiş sınıfların kullanacağı kodun bir kısmını vermek istiyor olabilir.
Türemiş somut sınıfları kısmi bir kod kullanımına zorlamak için bir taban sınıfın ilgili işlevi saf sanal yapılabilir. Buradaki fikir, türemiş sınıfları, taban sınıfın saf sanal işlevini hem ezmeye zorlamak hem de bu işlevin koduna ilave olarak (augmentation) kendi kodlarını kullanmalarını sağlamak. Aşağıdaki koda bakalım:

Yukarıdaki kodda Base sınıfının vfunc işlevi saf sanal yapılarak Base sınıfından kalıtım yoluyla elde edilecek somut sınıflar bu işlevi ezmeye zorlanmış.  vfunc işlevinin base.cpp dosyasında tanımlandığını ve bu işlevin varsayılan kodu temsil eden protected vfunc_impl işlevini çağırdığını görüyorsunuz. Bu işlevi ezecek somut sınıflar taban sınıfın vfunc işlevini çağırabilecekleri ve buna kod ekleyebilecekleri gibi kendi kodlarının herhangi bir yerinde doğrudan taban sınıfın vfunc_impl işlevini de çağırabilirler:

 

Share

Necati Ergin

C ve Sistem Programcıları Derneğinde eğitmen olarak çalışıyor.

Bunlar da ilginizi çekebilir

Kod Eklemek İçin Okuyun