虛函式與純虛函式 在他們的子類中都可以被重寫。它們的區別是:(1)純虛函式只有定義,沒有實現;而虛函式既有定義,也有實現的**。
純虛函式一般沒有**實現部分,如
virtual void print() = 0;
而一般虛函式必須要有**的實現部分,否則會出現函式未定義的錯誤。
virtual void print()
(2)包含純虛函式的類不能定義其物件,而包含虛函式的則可以。
定義為虛函式是為了允許用基類的指標來呼叫子類的這個函式
(1)抽象類的定義: 稱帶有純虛函式的類為抽象類。
• 抽象類是不能定義物件的。
c++純虛函式
一、定義
純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加「=0」
virtual void funtion1()=0
二、引入原因
1、為了方便使用多型特性,我們常常需要在基類中定義虛函式。
2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual returntype function()= 0;),則編譯器要求在派生類中必須予以重寫以實現多型性。同時含有純虛函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。
宣告了純虛函式的類是乙個抽象類。所以,使用者不能建立類的例項,只能建立它的派生類的例項。
純虛函式最顯著的特徵是:它們必須在繼承類中重新宣告函式(不要後面的=0,否則該派生類也不能例項化),而且它們在抽象類中往往沒有定義。
定義純虛函式的目的在於,使派生類僅僅只是繼承函式的介面。
純虛函式的意義,讓所有的類物件(主要是派生類物件)都可以執行純虛函式的動作,但類無法為純虛函式提供乙個合理的預設實現。所以類純虛函式的宣告就是在告訴子類的設計者,「你必須提供乙個純虛函式的實現,但我不知道你會怎樣實現它」。
C 中的虛函式和純虛函式
c 中的虛函式和純虛函式用法 1 虛函式和純虛函式可以定義在同乙個類 class 中,含有純虛函式的類被稱為抽象類 abstract class 而只含有虛函式的類 class 不能被稱為抽象類 abstract class 2 虛函式可以被直接使用,也可以被子類 sub class 過載以後以多型...
c 虛函式和純虛函式
虛函式 定義 在基類中用virtual宣告,不一定不被實現,可以用基類的指標來呼叫子類的對應函式,實現成員函式的動態過載。子類virtual可寫可不寫,編譯器自動加上。1.以下繼承後的print 相當於重寫,兩個類print 方法輸出結果不同 class a 2.加了vitual 定義為虛函式以後,...
C 虛函式和純虛函式
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...