定義了乙個基類animal,它包含兩個私有資料成員,乙個是string成員,儲存動物的名稱(「fido」),乙個是整數成 weight,儲存了動物的重量(單位是千克)。該基類還包含乙個公共的虛擬成員函式who()和乙個純虛函式sound(),公共的虛擬成員函式who()返回乙個string物件,該物件包含了animal物件的名稱和重量,純虛函式sound()在派生類中應返回乙個string物件,表示該動物發出的聲音。把animal類作為乙個公共基類,派生三個類sheep(「baaaa!!」)、dog(「woof woof!!」),cow(「mooooo!!!」),在每個類中實現sound()函式。定義乙個類zoo,它可以在乙個陣列中儲存3種不同型別的動物(使用指標陣列,陣列元素0儲存sheep類的指標,1儲存dog類的指標,2儲存cow類指標。)。編寫乙個main()函式函式,建立給定數量的派生類物件的隨機序列,在zoo物件中儲存這些物件(使用指標陣列)。動物類別(0,1,2。0表示sheep,1:dog,2:cow),動物名字,動物重量按編號順序依次輸出動物名字和動物重量2 cow 100
0 duoli 50
1 jiji 3
i』m a sheep. my name is duoli. my weight is 50 kgs. baaaa!!
i』m a dog. my name is jiji. my weight is 3 kgs. woof woof!!
i』m a cow. my name is cow. my weight is 100 kgs. mooooo!!!
#include
#include
#include
using
namespace std;
class
animal
;void animal::
set(string a,
int b)
string animal::
getn()
int animal::
getw()
string animal::
who(
)void animal::js(
)class
sheep
:public animal
;void sheep::
sets
(string a,
int b)
string sheep::
who(
)string sheep::
sound()
void sheep::js(
)class
dog:
public animal
;void dog::
setd
(string a,
int b)
string dog::
who(
)string dog::
sound()
void dog::js(
)class
cow:
public animal
;void cow::
setc
(string a,
int b)
string cow::
who(
)string cow::
sound()
void cow::js(
)class
zoo;
animal *p[3]
; sheep a;
dog b;
cow c;
void
setz()
;};void zoo::
setz()
intmain()
t.setz()
;for
(int i =
0; i <=
2;i++
)return0;
}
多型和虛函式
在c 中,多型是通過虛函式實現的。基類如果把乙個函式宣告為虛的 virtual 就表明繼承類可以覆蓋 override 這個函式 從而表現不同的行為,呈現出多型性 對於每乙個有虛函式的類,或者覆蓋了乙個或多個基類虛函式的繼承類,可認為有乙個與之關聯的虛函式表 v table v table 表中的每...
虛函式和多型
虛函式的概念 在類的成員函式前加virtual關鍵字,這個成員函式稱為虛函式。虛函式重寫 當在子類的定義了乙個與父類完全相同的虛函式時,則稱子類的這個函式重寫 也稱覆蓋 了父類的這個虛函式。include using namespace std class person public virtual...
虛函式和多型
pragma once 普通飛機 class plane include plane.h include using namespace std void plane fly void plane land pragma once include plane.h 直公升飛機 class jet pu...