1. 什么是抽象類?
包含有純虛函數的類,稱為抽象類。純虛函數是一個在基類中只有聲明的虛函數,在基類中無定義,派生類中一定要給出自己的定義。
// 純虛函數, 要有=0 void fun(int a, const char * b) = 0;
2. 抽象類為什么不能實例化?
可能是規定如此。可能的原因是,抽象類都是作為基類存在的,是對多種對象的共同點進行抽象的概念,從面對對象編程的思想來說,只要聲明共同的行為即可,不需要給出定義。
舉例來說,抽象類是方言,共同的特點是說話,至於是用東北話、四川話,還是普通話,就不需要指定(即使想指定,地球上那么多方言也不能都指定),派生類東北話、四川話中定義
具體的說話方式就可以了。如此一來,即簡化了基類中的代碼量,也方便派生類按照需求增添。
3. 虛函數為什么一定要在派生類中定義?
既然抽象類不能實例化,那么派生類繼承的虛函數,仍然是純虛函數,派生類也就成了抽象類,如此一來,當然不能實例化了。不能實例化,就不能創建對象,所以一定要定義。
當然,如果派生類依然是一個抽象,不定義當然可以,比如基類是生物,派生類是植物。
