純虛函式和抽象基類

2021-08-07 09:29:58 字數 610 閱讀 2407

純虛函式就是基類只定義了函式體,沒有具體的實現過程,必須在子類中加以實現。如果基類中含有乙個或多個純虛函式,那麼它就屬於抽象基類,不能被例項化。

1、  引入抽象基類和純虛函式的原因有以下兩點:

(1)為了方便的是使用多型特性;

(2)在很多情況下,基類本身生成物件是不合情理的。

抽象基類不能夠被例項化,它定義的純虛函式相當於介面,能把派生類的共同行為提取出來。

2、虛函式和純虛函式的區別

(1)類裡宣告虛函式的作用是為了能讓這個函式在它的子類裡面被覆蓋,這樣編譯器就可以在程式執行時進行動態繫結來達到多型。純虛函式只是乙個介面,是個函式的宣告而已,它必須要在其自類中去實現。

(2)虛函式在子類中可以不過載,但是純虛函式必須在子類中實現。通常很多函式需要加上virtual修辭,雖然犧牲掉一些效能,但是增加了物件導向的多型性,可以防止父類裡面的這個函式在子類裡被修改實現。

(3)虛函式的類用於「實作繼承」,也就是說繼承介面的同時也繼承了父類的實現,當然大家也可以完成自己的實現。純虛函式的類用於「介面繼承」,即純虛函式關注的是介面的統一性,實現由子類完成。

(4)帶純虛函式的類叫做虛基類。這種基類不能直接生成物件(不能用於例項化物件),只能被繼承,這樣的類也叫作抽象類。

純虛函式和抽象基類

純虛函式的格式 virtual 型別 函式名 參數列 0 而我們的純虛函式經常被用來構建抽象基類。抽象基類 當我們僅想對基類進行向上型別轉換,使用它的介面,而不希望使用者實際地建立乙個基類的物件,那麼我們就在基類中加入至少乙個純虛函式 pure virtual function 來使基類稱為抽象 a...

虛基類 虛函式 純虛函式和抽象類

一 虛基類 在 多繼承 中講過的例子中,由類a,類b1和類b2以及類c組成了類繼承的層次結構。在該結構中,類c的物件將包含兩個類a的子物件。由於類a是派生類c兩條繼承路徑上的乙個公共基類,那麼這個公共基類將在派生類的物件中產生多個基類子物件。如果要想使這個公共基類在派生類中只產生乙個基類子物件,則必...

C 抽象基類和純虛函式

為什麼c 要定義抽象基類?c 為什麼要定義抽象基類?抽象類就是類裡定義了純虛成員函式的類。純虛函式只提供了介面,並沒有具體實現。抽象類不能被例項化,通常是作為基類供子類繼承,子類中重寫虛函式,實現具體的介面。為什麼要定義抽象基類呢?依我所見主要有以下原因 1.最重要的原因是,可以將介面與實現分離。介...