1. 程式人生 > >C++中純虛函數

C++中純虛函數

tps 否則 情況 一點 base c++ () ase UNC

1.純虛函數

virtual ReturnType Function()= 0;

純虛函數可以讓類先具有一個操作名稱,而沒有操作內容,讓派生類在繼承時再去具體地給出定義。凡是含有純虛函數的類叫做抽象類。這種類不能聲明對象,只是作為基類為派生類服務。除非在派生類中完全實現基類中所有的的純虛函數,否則,派生類也變成了抽象類,不能實例化對象。 一般而言純虛函數的函數體是缺省的,但是也可以給出純虛函數的函數體(此時純虛函數變為虛函數),這一點經常被人們忽視,調用純虛函數的方法為baseclass::virtual function.

2.純虛函數存在的意義

【答案1】四個字:制定標準
純虛函數是為你的程序制定一種標準,即只要你繼承了我,就必須按照我和標準來,實現我所有的方法,否則你也是虛擬的,和JAVA裏的接口一樣,都是制定標準,為了使程序更加通用化,可重用性提高,讓所有實現它或繼承自它的子類全部按同一標準來工作,你想想大家都按標準來對程序的益處是什麽?
【答案2】在很多情況下,基類本身生成對象是不合情理的。例如,動物作為一個基類可以派生出老虎、孔雀等子類,但動物本身生成對象明顯不合常理。 【答案3】父類中存在純虛函數,子類中重寫(override)該函數,可實現多態。

C++中純虛函數