虛函式和純虛函式的區別

2021-07-22 11:12:00 字數 713 閱讀 6116

純虛函式: 在

基類中宣告

的虛函式,但在基類中

沒有定義

,但要求派生類都要定義自己的實現方法

。在基類中實現虛函式的方法是在函式原型後加「=0」。

純虛函式引入的原因是:

基類本身生成物件是不合情理的

。純虛函式最顯著的特徵:它們必須在繼承類中重新宣告函式(不要後面的=0,否則該派生類也不能例項化),而且它們在抽象類中往往沒有定義。

定義純虛函式的目的在於,使派生類僅僅只是繼承函式的介面。

c++中包含純虛函式的類,被稱為是「抽象類」。抽象類不能使用new出物件,只有實現了這個純虛函式的子類才能new出物件。

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

c++中的類包含純虛函式,就是「抽象類」。

虛函式和純虛函式的區別:

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

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

3,虛函式和非虛函式

都可以在子類中被過載,

以多型的形式被呼叫。 4,

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

普通函式:靜態聯編,沒有執行時多型。在繼承關係中,子類不應該重寫父類的繼承函式。

虛函式和純虛函式的區別

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

虛函式和純虛函式的區別

a.編譯時 多型性 通過 過載函式實現 b執行時 多型性 通過虛函式實現。首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,...

虛函式和純虛函式的區別

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