c++
1、什麼純虛函數?
首先,二者申明不一樣。
virtual void test(void);//虛函數
virtual void test(void) = 0;//純虛函數
其次,如果一個類包含了一個純虛函數(哪怕隻有一個是純虛函數),那麼它就是一個抽象類——就是不能生成具體的對象!但如果類中隻包含虛函數,那麼是可以定義具體的對象的!
但二者又有一個相同點:都必須在子類中覆寫申明的虛函數!而不管是虛還是純虛!
使用虛函數,我們可以靈活的進行動态綁定,當然是以一定的開銷為代價。 如果父類的函數(方法)根本沒有必要或者無法實作,完全要依賴子類去實作的話,可以把此函數(方法)設為virtual 函數名=0 我們把這樣的函數(方法)稱為純虛函數。
也就是說,虛函數 ,子類可以不重寫,直接繼承父類 的方法來使用,也可以重寫
但是 純虛函數是子類是必須重寫了才可以使用
實際上我個人認為純虛函數的引入,是出于兩個目的,
1.為了安全.因為避免任何需要明确但是因為不小心而導緻的未知的結果.
提醒子類去做應做的實作.
2.為了效率,不是程式執行的效率,而是為了編碼的效率