c 多型性與虛函式(一)

2021-06-18 06:34:17 字數 2562 閱讀 1674

//有些結論是自己推測的,如有不對敬請指正。

【專案1】根據給出的基類animal和main()函式。

1、根據給出的main()函式和執行結果的提示,設計出相關的各個類,注意觀察執行結果,提取出每個類中需要的資料成員,並匹配上需要的成員函式。

2、顯然,animal設計為抽象類更合適,animal不需要能夠例項化,是專門作基類使用的。改造程式,使animal設計為抽象類,這時main()函式中p = new animal();將出錯,將此行刪除。

3、每乙個animal的派生類都有乙個「名字」資料成員,這一共有的成員完全可以由基類提供改造上面的程式,將這一資料成員作為抽象類animal資料成員被各派生類使用。

下面是給出的基類animal和main()函式:

#include#includeusing namespace std;

class animal

【專案2】寫乙個程式,定義抽象基類shape,由它派生出3個派生類,circle(圓形)、rectangle(矩形)、********(三角形)。用如下的main()函式,求出定義的幾個幾何體的面積和

#includeusing namespace std;

class shape

};class circle:public shape

circle(double r):radius(r){}

double area()

~circle(){}

private:

double radius;

};class rectangle:public shape

rectangle(double l,double w):length(l),width(w){}

double area()

~rectangle(){}

private:

double length,width;

};class ********:public shape

********(double b,double h):bottle(b),higth(h){}

double area()

~********(){}

private:

double bottle,higth;

};int main()

; //定義基類指標陣列pt,使它每乙個元素指向乙個派生類物件

double areas=0.0; //areas為總面積

for(int i=0; i<6; i++)

cout<<"totol of all areas="<

【專案3】設計乙個抽象類csolid,含有兩個求表面積及體積的純虛函式。設計個派生類ccube、cball、ccylinder,分別表示正方體、球體及圓柱體。在main()函式中,定義基類的指標p(csolid *p;),利用p指標,輸出正方體、球體及圓柱體物件的表面積及體積。

#include using namespace std;

class csolid

};class ccuboid:public csolid

ccuboid(double l,double w,double h):length(l),width(w),heigth(h){}

double area();

double volume();

~ccuboid(){}

private:

double length,width,heigth;

};double ccuboid::area()

double ccuboid::volume()

class cball:public csolid

cball(double r):radius(r){}

double area()

double volume()

~cball(){}

private:

double radius;

};class ccylinder:public csolid

ccylinder(double r,double h):radius(r),heigth(h){}

double area()

double volume()

~ccylinder(){}

private:

double radius,heigth;

};int main()

{ //csolid ss; 抽象類不可以建立物件!!!!!!

//csolid *s=new csolid; 抽象類不可以建立物件!!!!!!

csolid *s=new ccuboid;

ccuboid cub(3.3,2.5,6.2);

cball b(1.12);

ccylinder cy(2.5,2.6);

//用派生類物件直接訪問他們的函式

cout<<"the data of cuboid area:"

C 多型性與虛函式

物件導向程式設計中的多型性是指向不同的物件傳送同乙個訊息,不同物件對應同一訊息產生不同行為。在程式中訊息就是呼叫函式,不同的行為就是指不同的實現方法,即執行不同的函式體。也可以這樣說就是實現了 乙個介面,多種方法 從實現的角度來講,多型可以分為兩類 編譯時的多型性和執行時的多型性。前者是通過靜態聯編...

C 多型性 與 虛函式

1.運算子過載 運算子過載形式 1 過載為類的成員函式 運算子過載函式說明為類的成員函式的格式為 類名 operator 運算子 參數列 如 c1 c2 編譯器將給出的解釋為 c1.operator c2 該運算子過載函式僅僅有乙個引數,所以過載為成員函式時,雙目運算子僅有乙個引數。對於單目運算子,...

C 多型性與虛函式

多型性是物件導向程式設計的關鍵技術之一。利用多型性技術,可以呼叫同乙個函式名的函式,實現完全不同的功能。若程式語言不支援多型性,不能稱為物件導向的語言。在c 中有兩種多型性 1 定義格式 虛函式是乙個類的成員函式,定義格式如下 virtual 返回型別 函式名 參數列 說明 2 通過虛函式實現多型性...