C++中純虛函數與虛函數的區別

1、在一個類中定義一個純虛函數,則這個類是抽象類。純虛函數在基類中是不實現的,只是提供一個接口。在子類中分別去實現。在很多情況下,類本身是不生成對象的。動物作爲一個基類可以派生出老虎、孔雀等子類,但動物本身生成對象明顯不合常理。
純虛函數就是基類只定義了函數體,沒有實現過程,定義方法如: virtual void Eat() = 0; 不要 

在cpp中定義;純虛函數相當於接口,不能直接實例化,需要派生類來實現函數定義;

子類中必須覆蓋基類的純虛函數;

含有純虛函數的類不能被實例化;

含有純虛函數的類一定是抽象類;

基類的純虛函數沒有函數體。

而:類裏聲明爲虛函數的話,這個函數是實現的,哪怕是空實現,它的作用就是爲了能讓這個函數在它的子類裏面可以被重載,這樣的話,這樣編譯器就可以使用後期綁定來達到多態了。

3、虛函數是爲了繼承接口和默認行爲,可以繼承父類的實現,當然自己也可以去實現。
     純虛函數只是繼承接口,行爲必須重新定義。 

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章