$1.99 Domains* at GoDaddy.com

C++ Sanal Fonksiyon Kullanılmasına İlişkin Örnekler

cders-1401. İngilizce yazılar üzerinde işlem yapan bir CString sınıfı olsun. Bu sınıfın yazıları karşılaştıran, büyük harf ya da küçük harfe dönüştüren üye fonksiyonları olsun. Yazıların karşılaştırılması ve harf dönüşümünün yapılması dile bağlı bir durumdur. CString sınıfının Cmp isimli karşılaştırma fonksiyonu işlemini yaparken iki karakteri karşılaştıran sanal Cmphr fonksionunu çağırıyor olsun. CString sınıfından bir sınıf türetilir, CmpChr sanal fonksiyonu bu sınıf için yeniden yazılırsa, artık Cmp fonksiyonu türemiş fonksiyonunun CmpChr fonksiyonunu çağıracak ve işlemler başka bir dile göre düzgün yapılabilecektir.

 

2. Bir dizinin Array isimli bir sınıfla temsil edildiğini düşünelim. Bu sınıfın sıraya dizme işlemini yapan sanal bir sort fonksiyonu olsun. Bazı üye fonksiyonlar da bu fonksiyonu çağrarak sort işlemini gerçekleştirsin. Sort algoritması çok çeşitli olabilir. Bu sınıftan bir sınıf türetilerek bu sanal fonksiyon başka bir sort algoritmasını kullancak biçimde yeniden yazılabilir. Bu durumda bizim istediğimiz sort algoritmasıyla işlemler yürütülecektir.

 

3. MFC sınıf sisteminde her türlü pencere işlemleri CWnd sınıfı tarafından yapılmaktadır. Dialog penceresi de özel bir tür penceredir. Dialog penceresi işlemleri CWnd sınıfından türetilen CDialog sınıfı ile yapılmaktadır. Her dialog penceresi diğerinden farklı özelliklere sahip olabilir. O işlemler de CDailog sınıfından türetilen sınıfla temsil edilir.

 

c34 

 

Dialog penceresini görünür hale getirmek için CDialog sınıfının DoModal() fonksiyonu çağırılır. CDialog sınıfının OnOk ve OnCancel sanal fonksiyonları vardır. CWnd sınıfından türetilen bir sınıfa ilişkin bir nesne tanımlandığında CWnd sınıfının başlangıç fonksiyonu ile yaratılan nesnenin adresi MFC sistemi tarafından global bir biçimde saklanır. Ne zaman bir dialog penceresinde OK ya da CANCEL tuşlarına basılırsa MFC saklamış olduğu adresle OnOk ya da OnCancel fonksiyonlarını çağırır. Eğer biz bu fonksiyonları yeniden yazarsak bizimki çağırılacaktır. Tabii orijinal OnOk ve OnCancel fonksiyonları kritik bazı işlemleri de yapmaktadır. Bu durumda bu fonksiyonların doğrıdan çağırmaları da gerekebilir.

 

void MyDialog::onOK(void)

{

….

….

CDialog::OnOK();

}

Kategoriler: C++ Programlama, Yazılım

Tags: , , ,

Yorumlar

Yorum Yok

Yorumunuzu Ekleyin

Yorum eklemek için giris yapmalısınız.