在很多的情況下,在基類中一般都不能給出虛函式的具體而有意義的定義,這時我們就可以將它說明為純虛函式。它的具體的定義由它的派生類具體完成,這樣可以使類之間的結構更加清晰,同時也更容易理解。
含有純虛函式的類叫抽象類。
說明純虛函式的一般格式:
class 類名 {
virtual 返回值型別 函式名(引數列表)=0;}
1在純函式中,不能提供出函式的具體實現,而是需要在派生類中再加以具體實現。
2,乙個類中可以有多個純虛函式。包含純虛函式的類被稱為抽象類。
3.乙個抽象類只能作為基類來派生新類,而不能說明抽象類的物件和物件陣列。
抽象類只能定義指標。 不能定義物件和陣列。
4.可以說明抽象類物件的指標和引用。
5.從乙個抽象派生的類必須提供純虛函式的實現**,或在該派生類中仍將它說明為純虛函式。
6,在抽象類中,至少有乙個虛函式是純虛函式。
#ifndef _______shape__
#define _______shape__
#include
class shape
;#endif /* defined(_______shape__) */
#include "shape.h"
void
shape::setx(int _x, int _y)
intshape::getx()
intshape::gety()
#ifndef _______rectangle__
#define _______rectangle__
#include
#include "shape.h"
class rectangle :public
shape ;
#endif /* defined(_______rectangle__) */
#include "rectangle.h"
void
rectangle::setwh(int _w, int _h)
intrectangle:: getwidth()
intrectangle::getheigth()
float
rectangle:: area()
#include
#include "rectangle.h"
#include "shape.h"
usingnamespace
std;
int main(int argc, const
char * argv)
{shape *p;
rectangle rect;
rect.setwh(10, 20);
p=▭//加上virtual,基類可以呼叫派生類的函式。
cout
<
area
()<<
endl
;//呼叫派生類的函式,實現多型5
C 純虛函式與抽象類
純虛函式 純虛函式 在基類中將某一成員函式定為虛函式,並不是基類本身的需要,而是考慮到派生類的需 要,在基類中預留了乙個函式名,具體功能留給派生類根據需要去定義。純虛函式是在宣告虛函式時被 初始化 為0的函式。一般形式為 virtual 函式型別 函式名 引數列表 0 如 virtual float...
C 純虛函式與抽象類
參考 純虛函式 是一種特殊的虛函式,是基類中只有宣告,無 法實現 定義的虛函式。含有純虛函式的類稱為 抽象類 ifndef purevir h define purevir h define pi 3.14159 namespace purev 基類為 抽象類 的派生類都必須定義自己的,和純虛函式同...
C 抽象類與純虛函式
抽象類是為了抽象和設計的目的而建立的,處於繼承層次結構的上層。定義了純虛函式的類就是抽象類。具體類是能夠建立物件的類。抽象類的規定 1 抽象類只能用作其他類的基類,不能建立抽象類物件。2 抽象類不能用作引數型別 函式返回型別或顯式轉換的型別。3 可以定義指向抽象類的指標和引用,此指標可以指向它的派生...