天天看點

【2012面試準備】2012.10.26面試準備

c++

1、什麼純虛函數?

首先,二者申明不一樣。

virtual void test(void);//虛函數  

virtual void test(void) = 0;//純虛函數

其次,如果一個類包含了一個純虛函數(哪怕隻有一個是純虛函數),那麼它就是一個抽象類——就是不能生成具體的對象!但如果類中隻包含虛函數,那麼是可以定義具體的對象的!

但二者又有一個相同點:都必須在子類中覆寫申明的虛函數!而不管是虛還是純虛!

使用虛函數,我們可以靈活的進行動态綁定,當然是以一定的開銷為代價。 如果父類的函數(方法)根本沒有必要或者無法實作,完全要依賴子類去實作的話,可以把此函數(方法)設為virtual 函數名=0 我們把這樣的函數(方法)稱為純虛函數。

也就是說,虛函數 ,子類可以不重寫,直接繼承父類 的方法來使用,也可以重寫

但是 純虛函數是子類是必須重寫了才可以使用

實際上我個人認為純虛函數的引入,是出于兩個目的,

1.為了安全.因為避免任何需要明确但是因為不小心而導緻的未知的結果.

提醒子類去做應做的實作.

2.為了效率,不是程式執行的效率,而是為了編碼的效率