C 虛函式和純虛函式的異同

2021-06-29 08:07:26 字數 589 閱讀 4155

虛函式又稱為虛方法,虛方法是父類的乙個組成部分,但是可以被不同的子類重寫。虛函式的關鍵字是virtual,如下所示,是乙個簡單的虛函式的宣告:

class base

;

在虛函式中有乙個特殊的虛函式,稱為純虛函式:

class base

;

純虛函式是一種特殊的虛函式,但是和一般的虛函式有著很大的區別,不妨在這裡做一下區分:

1)虛函式和純虛函式可以定義在同乙個類中,不過含有純虛函式的類被稱為抽象類,不能夠例項化。

2)虛函式可以直接使用,也可以被派生類重寫以後,以多型的形式被呼叫,而純虛函式不能夠直接使用,必須在派生類中被重寫以後才能夠被呼叫;

3)虛函式必須被實現,如果沒有被實現,會被編譯器報錯,而純虛函式在定義的同時就被實現了,例如:

virtual

void foo(void)=0;

4)他們的相同之處則是由於純虛函式是屬於虛函式的一種,故虛函式具備的基本特性,其都具有。

虛函式是c++實現多型的主要部分,通過對虛函式的重寫,使得多型的特性被發揮的如林盡致。

c 虛函式和純虛函式

虛函式 定義 在基類中用virtual宣告,不一定不被實現,可以用基類的指標來呼叫子類的對應函式,實現成員函式的動態過載。子類virtual可寫可不寫,編譯器自動加上。1.以下繼承後的print 相當於重寫,兩個類print 方法輸出結果不同 class a 2.加了vitual 定義為虛函式以後,...

C 虛函式和純虛函式

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

C 虛函式和純虛函式

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