5.4.3 純虛函式和抽象類
純虛函式是乙個在基類中說明的虛函式,它在該基類中沒有定義,但是要求在派生類中根據需要對它進行定義,或仍然說明為純虛函式。
宣告純虛函式的一般格式是:
virtual 函式型別 函式名(參數列)=0;
純虛函式的作用是:在基類中為其派生類保留乙個函式的名字,以便派生類根據需要對它進行重新定義。純虛函式沒有函式體,它最後面「=0 」並不表示函式的返回值是0,它只是形式上的作用,告訴編譯系統這是純虛函式。純虛函式不具有函式的功能,不能被呼叫。
//應用舉例
#includeusingnamespace
std;
#define pi 3.14
class circle
virtual
void show()=0; //
在基類裡定義純虛函式
protected
:
double
radius;
};class area:public
circle
};class perimeter:public
circle
};int
main()
程式執行結果:
圓的面積是:314
圓的周長是:62.8
在以上例子中,circle是乙個基類,它表示乙個圓。從它可以派生出面積類area和周長類
perimeter。顯然,基類中定義的show函式是沒有任何意義的,它只是用來提供派生類使用
的公共介面,所以在程式中將其定義為純虛函式,但在派生類中,則根據程式的需要,具體
地重新定義純虛函式。
如果乙個類至少有乙個純虛函式,那麼就稱為這個類為抽象類。因此,上述程式中定義的類
circle就是乙個抽象類。對於抽象類的使用有以下幾點規定:
(1)由於抽象類中至少包含有乙個沒有定義功能的純虛函式,因此抽象類只能用其他類的基類,
不能建立抽象類的物件。
(2)抽象類不能用作引數型別、函式返回型別或顯式轉換的型別。但是可以宣告指向抽象類的
的指標變數,此指標可以指向它的派生類,進而實現多型性。
(3)如果在抽象類的派生類中沒有重新說明純虛函式,則該函式在派生類中仍然為純虛函式,
而這個派生類仍然還是乙個派生類。
C 純虛函式與抽象類
純虛函式 純虛函式 在基類中將某一成員函式定為虛函式,並不是基類本身的需要,而是考慮到派生類的需 要,在基類中預留了乙個函式名,具體功能留給派生類根據需要去定義。純虛函式是在宣告虛函式時被 初始化 為0的函式。一般形式為 virtual 函式型別 函式名 引數列表 0 如 virtual float...
C 純虛函式與抽象類
在很多的情況下,在基類中一般都不能給出虛函式的具體而有意義的定義,這時我們就可以將它說明為純虛函式。它的具體的定義由它的派生類具體完成,這樣可以使類之間的結構更加清晰,同時也更容易理解。含有純虛函式的類叫抽象類。說明純虛函式的一般格式 class 類名 virtual 返回值型別 函式名 引數列表 ...
C 純虛函式與抽象類
參考 純虛函式 是一種特殊的虛函式,是基類中只有宣告,無 法實現 定義的虛函式。含有純虛函式的類稱為 抽象類 ifndef purevir h define purevir h define pi 3.14159 namespace purev 基類為 抽象類 的派生類都必須定義自己的,和純虛函式同...