C 純虛函式與抽象類

2021-06-18 21:50:25 字數 1460 閱讀 8809

在很多的情況下,在基類中一般都不能給出虛函式的具體而有意義的定義,這時我們就可以將它說明為純虛函式。它的具體的定義由它的派生類具體完成,這樣可以使類之間的結構更加清晰,同時也更容易理解。

含有純虛函式的類叫抽象類。

說明純虛函式的一般格式:

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 可以定義指向抽象類的指標和引用,此指標可以指向它的派生...