c 學習 oop 純虛函式與抽象類

2021-10-22 06:27:11 字數 3602 閱讀 2286

/*

date: 14/03/21 20:33

description: 純虛函式與抽象類

純虛函式

抽象類-抽象資料型別

任何包含乙個或多個純虛函式的類都是抽象類

不要建立這個類的物件,應該繼承它

務必覆蓋從這個類繼承的純虛函式

實現純虛函式

c++介面

就是只包含純虛函式的抽象基類

*/#include

using

namespace std;

class

shape

virtual

~shape()

virtual

double

getarea()

=0;virtual

double

getperim()

=0;virtual

void

draw()

=0;}

;void shape::

draw()

class

circle

:public shape

virtual

~circle()

double

getarea()

//只要有乙個成員函式是虛函式,那麼析構函式也必須做成虛函式

double

getperim()

void

draw()

;private

:double radius;};

void circle::

draw()

class

rectangle

:public shape

virtual

~rectangle()

double

getarea()

double

getperim()

void

draw()

;virtual

intgetlength()

virtual

intgetwidth()

private

:int width;

int length;};

void rectangle::

draw()

cout<<

"\n";}

}class

square

:public rectangle

double

getperim()

};square::

square

(int len)

:rectangle

(len,len)

//這種派生類建構函式 呼叫 基類建構函式的方法

square::

square

(int len,

int wid)

:rectangle

(len,wid)

}int

main()

if(fquit==

false)}

return0;

}

/*

date: 15/03/21 11:42

description:

*/#include

using

namespace std;

enum color

;class

animal

virtual

intgetage()

const

virtual

void

setage

(int age)

virtual

void

sleep()

const=0

;virtual

void

eat(

)const=0

;virtual

void

reproduce()

const=0

;virtual

void

move()

const=0

;virtual

void

speak()

const=0

;private

:int age;};

animal::

animal

(int age)

:age

(age)

class

mammal

:public animal

virtual

~mammal()

virtual

void

reproduce()

const};

class

fish

:public animal

virtual

~fish()

virtual

void

sleep()

const

virtual

void

eat(

)const

virtual

void

reproduce()

const

virtual

void

move()

const

virtual

void

speak()

const};

class

horse

:public mammal

virtual

~horse()

virtual

void

sleep()

const

virtual

void

eat(

)const

virtual

void

move()

const

virtual

void

speak()

const

virtual color getcolor()

const

protected

: color color;};

class

dog:

public mammal

virtual

~dog()

virtual

void

sleep()

const

virtual

void

eat(

)const

virtual

void

reproduce()

const

virtual

void

move()

const

virtual

void

speak()

const

protected

: color color;};

intmain()

if(fquit==

false)}

return0;

}

C 純虛函式與抽象類

純虛函式 純虛函式 在基類中將某一成員函式定為虛函式,並不是基類本身的需要,而是考慮到派生類的需 要,在基類中預留了乙個函式名,具體功能留給派生類根據需要去定義。純虛函式是在宣告虛函式時被 初始化 為0的函式。一般形式為 virtual 函式型別 函式名 引數列表 0 如 virtual float...

C 純虛函式與抽象類

在很多的情況下,在基類中一般都不能給出虛函式的具體而有意義的定義,這時我們就可以將它說明為純虛函式。它的具體的定義由它的派生類具體完成,這樣可以使類之間的結構更加清晰,同時也更容易理解。含有純虛函式的類叫抽象類。說明純虛函式的一般格式 class 類名 virtual 返回值型別 函式名 引數列表 ...

C 純虛函式與抽象類

參考 純虛函式 是一種特殊的虛函式,是基類中只有宣告,無 法實現 定義的虛函式。含有純虛函式的類稱為 抽象類 ifndef purevir h define purevir h define pi 3.14159 namespace purev 基類為 抽象類 的派生類都必須定義自己的,和純虛函式同...