虛函數繼承中,虛函數為什么一定要在派生類中定義?


1. 什么是抽象類?

  包含有純虛函數的類,稱為抽象類。純虛函數是一個在基類中只有聲明的虛函數,在基類中無定義,派生類中一定要給出自己的定義。

// 純虛函數, 要有=0
void fun(int a, const char * b) = 0;

  

2. 抽象類為什么不能實例化?

  可能是規定如此。可能的原因是,抽象類都是作為基類存在的,是對多種對象的共同點進行抽象的概念,從面對對象編程的思想來說,只要聲明共同的行為即可,不需要給出定義。

舉例來說,抽象類是方言,共同的特點是說話,至於是用東北話四川話,還是普通話,就不需要指定(即使想指定,地球上那么多方言也不能都指定),派生類東北話、四川話中定義

具體的說話方式就可以了。如此一來,即簡化了基類中的代碼量,也方便派生類按照需求增添。

 

3. 虛函數為什么一定要在派生類中定義?

  既然抽象類不能實例化,那么派生類繼承的虛函數,仍然是純虛函數,派生類也就成了抽象類,如此一來,當然不能實例化了。不能實例化,就不能創建對象,所以一定要定義。

當然,如果派生類依然是一個抽象,不定義當然可以,比如基類是生物,派生類是植物。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM