c 虛函式與純虛函式

2021-08-22 02:54:11 字數 1515 閱讀 9015

首先明確:c++中,虛函式的主要作用是構成多型,核心理念就是通過基類訪問派生類定義的函式,可以解決**的歧義;純虛函式是指被標明為不具體實現的虛函式,是一種特殊的虛函式。

1、純虛函式是虛函式的乙個子集兩者可以定義在同乙個類中,含有純虛函式的類被稱為抽象類,不能生成物件;

只含有虛函式的類不能被稱為抽象類。 

2、虛函式既有定義,也有實現的**;可以被直接使用,也可以被子類過載以後以多型的形式呼叫;

純虛函式必須在子類中實現該函式才可以使用,因為純虛函式在基類只有宣告而沒有定義。

3、包含純虛函式的類不能定義其物件,而包含虛函式的則可以。

4、 虛函式和純虛函式都可以在子類中被過載,以多型的形式被呼叫。

5、虛函式和純虛函式通常存在於抽象基類之中,被繼承的子類過載,目的是提供乙個統一的介面。

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

7. 實現了純虛函式的子類,該純虛函式在子類中就程式設計了虛函式,子類的子類即孫子類可以覆蓋該虛函式,由多型方式呼叫的時候動態繫結。

8. 多型性指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。

c++支援兩種多型性:編譯時多型性,執行時多型性。

(1)編譯時多型性:通過過載函式實現

(2)執行時多型性:通過虛函式實現

虛函式必須是基類的非靜態成員函式,其訪問許可權可以是protected或public,在基類的類定義中定義虛函式的形式為:

virtual 函式返回值型別 虛函式名 (形參表)

純虛函式是一種特殊的虛函式,它的一般格式如下:

class 《類名》

*為了方便實用多型,程式設計者常常需要在基類中定義虛函式。在很多情況下,基類中不能對虛函式給出有意義的實現,而把它們說明為純虛函式,它的實現留給該基類的派生類去做。這就是純虛函式的作用

虛函式:類中提供虛函式的實現,為子類提供預設的函式實現;子類可以重寫父類的虛函式實現子類的特殊化。

如下就是乙個父類中的虛函式:

#includeusing namespace std;

class a

純虛函式:

(1)c++中包含純虛函式的類,被稱為是「抽象類」。抽象類不能使用new來建立物件,實現了這個純虛函式的子類才能new。 

(2)c++中的純虛函式更像是「只提供申明,沒有實現」,是對子類的約束,是「介面繼承」。 

(3)c++中的純虛函式也是一種「執行時多型」。 

如下面的類包含純虛函式,就是「抽象類」:

class a

;class b : public a

C 虛函式與純虛函式

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

C 虛函式與純虛函式

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

C 虛函式與純虛函式

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