C 虛函式與純虛函式

2021-08-16 12:09:24 字數 1135 閱讀 6074

1. 虛函式和純虛函式可以定義在同乙個類(class)中,含有純虛函式的類被稱為抽象類(abstract class),而只含有虛函式的類(class)不能被稱為抽象類(abstract class)。

2. 虛函式可以被直接使用,也可以被子類(sub class)過載以後以多型的形式呼叫,而純虛函式必須在子類(sub class)中實現該函式才可以使用,因為純虛函式在基類(base class)只有宣告而沒有定義。

3. 虛函式和純虛函式都可以在子類(sub class)中被過載,以多型的形式被呼叫。

4. 虛函式和純虛函式通常存在於抽象基類(abstract base class -abc)之中,被繼承的子類過載,目的是提供乙個統一的介面。

5. 虛函式的定義形式:virtual

純虛函式的定義形式:virtual = 0;

在虛函式和純虛函式的定義中不能有static識別符號,原因很簡單,被static修飾的函式在編譯時候要求前期bind,然而虛函式卻是動態繫結(run-time bind),而且被兩者修飾的函式生命週期(life recycle)也不一樣。

6. 虛函式必須實現,如果不實現,編譯器將報錯,錯誤提示為:

error lnk****: unresolved external symbol "public: virtual void __thiscall

classname::virtualfunctionname(void)"

7. 對於虛函式來說,父類和子類都有各自的版本。由多型方式呼叫的時候動態繫結。

8. 實現了純虛函式的子類,該純虛函式在子類中就程式設計了虛函式,子類的子類即孫子類可以覆蓋

該虛函式,由多型方式呼叫的時候動態繫結。

9. 虛函式是c++中用於實現多型(polymorphism)的機制。核心理念就是通過基類訪問派生類定義的

函式10. 多型性指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。c++支援兩種多型性:編譯時多型性,執行時多型性。

a.編譯時多型性:通過過載函式實現

b 執行時多型性:通過虛函式實現。

11. 如果乙個類中含有純虛函式,那麼任何試圖對該類進行例項化的語句都將導致錯誤的產生,因為抽象基類(abc)是不能被直接呼叫的。必須被子類繼承過載以後,根據要求呼叫其子類的方法。

12.抽象類不能例項化。

C 虛函式與純虛函式

純虛函式定義如下 virtual functionname parameter 0 類的乙個成員定位虛函式的實際意義在於讓c 知道該函式並無意義,它的作用只是為了讓派生類進行函式過載保留位置。純虛函式的定義方法就是在類的虛函式後面加上 0 標記,類中一旦出現了純虛函式的定義,那麼此類為抽象類。例項 ...

C 虛函式與純虛函式

今天講講c 中,虛函式與純虛函式的用法和區別。而純虛函式是一種特殊的函式,它的作用是在基類中不給出有意義的實現,而把說明成純虛函式,它的實現留給該基類的派生類去做。包含純虛函式的類就是抽象類,抽象類不能被例項化,但是可以定義指向抽象類資料的指標變數,當派生類稱為具體類後,就可以用這種指標指向派生類的...

C 虛函式與純虛函式

首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...