//有些結論是自己推測的,如有不對敬請指正。
【專案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 通過虛函式實現多型性...