純虛函式定義如下: virtual functionname (parameter ) =0 ;
類的乙個成員定位虛函式的實際意義在於讓c++知道該函式並無意義,它的作用只是為了讓派生類進行函式過載保留位置。純虛函式的定義方法就是在類的虛函式後面加上 「 =0 」 標記,類中一旦出現了純虛函式的定義,那麼此類為抽象類。
例項 1.
#include
#include
#include
using namespace std;
//抽象類定義
class abstractcls
virtual void showmember()=0; //純虛函式的定義
protected:
float speed;
int total;
};class car public : abstractcls //抽象類派生類
virtual void showmember() //派生類函式過載
總結,什麼情況下需要使用純虛函式:
1,當想要在基類中抽象出乙個方法,且該類被繼承類而不能被例項化時。
2,基類的方法必須在派生類中被實現時。
3,多個物件具有公共的抽象屬性,但卻有不同的實現要求時。
例項2. 類a有兩個純虛成員函式 lock(),unlock() 和乙個虛析構函式
class a ;
類a實際上並沒有實現這些函式,只是宣告了他們。因為具有純虛函式任何類不能用於建立執行時的物件,為了使用這個類,使用者必須從這個抽象類派生出乙個派生類來。而且為抽象類宣告的每乙個純虛函式提供函式的定義與實現。
b類從a類派生,並提供了2個純虛函式的定義。
class b :public a
virtual void unlock(void)
protectd:
pthread _mutex_t x;
};b類通過posix 函式 pthread_mutext_lock() 和 pthread_mutext_unlock() 已經實現了兩個純虛函式。如果b只實現了其中的乙個純虛函式,那麼b類仍然認為是乙個純抽象類,因為它仍然包含乙個純虛函式。
總結: 純虛函式充當實現策略,它的任何使用者在使用前必須實現純虛函式。所以抽象類提供了規範。
C 虛函式與純虛函式
今天講講c 中,虛函式與純虛函式的用法和區別。而純虛函式是一種特殊的函式,它的作用是在基類中不給出有意義的實現,而把說明成純虛函式,它的實現留給該基類的派生類去做。包含純虛函式的類就是抽象類,抽象類不能被例項化,但是可以定義指向抽象類資料的指標變數,當派生類稱為具體類後,就可以用這種指標指向派生類的...
C 虛函式與純虛函式
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...
C 虛函式與純虛函式
最近在準備校招,做了一些筆試題,發現以前的基礎知識確實有一些遺失,好腦袋不如爛筆頭,所以決定隨筆記下一些基礎知識,以備後用。今天就先寫一寫虛函式與純虛函式。虛函式是類中被virtual關鍵字修飾的成員函式,為了實現類的多型性,即將介面與實現分離,需要注意的是虛函式必須實現,如果不實現,編譯器會報錯,...