C++第十三週【任務3】定義抽象基類Shape,由它派生出3個派生類,Circle(圓形)、Rectangle(矩形)、Triangle(三角形)
阿新 • • 發佈:2019-02-08
/*
* 程式的版權和版本宣告部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 檔名稱:C++第十三週【任務3】
* 作 者: 李洪懸
* 完成日期: 2012 年 5 月 15 日
* 對任務及求解方法的描述部分
* 輸入描述:Circle(圓形)、Rectangle(矩形)、Triangle(三角形)的資料資訊
* 程式的版權和版本宣告部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 檔名稱:C++第十三週【任務3】
* 作 者: 李洪懸
* 完成日期: 2012 年 5 月 15 日
* 對任務及求解方法的描述部分
* 輸入描述:Circle(圓形)、Rectangle(矩形)、Triangle(三角形)的資料資訊
* 問題描述:定義抽象基類Shape,由它派生出3個派生類,Circle(圓形)、Rectangle(矩形)、Triangle(三角形)。
* 程式輸出:幾個幾何體的面積和
*/
【任務3】寫一個程式,定義抽象基類Shape,由它派生出3個派生類,Circle(圓形)、Rectangle(矩形)、Triangle(三角形)。用如下的mian()函式,求出定義的幾個幾何體的面積和。
源程式:
輸出結果:#include<iostream> using namespace std; class Shape { public: virtual double area()const = 0; }; class Circle:public Shape { public: Circle(double rad):radius(rad){} virtual double area()const; private: double radius; }; double Circle::area()const { return (3.14159*radius*radius); } class Rectangle:public Shape { public: Rectangle(double len,double wid):leng(len),width(wid){} virtual double area()const; private: double leng; double width; }; double Rectangle::area()const { return (leng*width); } class Triangle:public Shape { public: Triangle(double len,double hei):length(len),height(hei){} virtual double area()const; private: double length; double height; }; double Triangle::area()const { return ( (length*height)/2 ); } int main() { Circle c1(12.6),c2(4.9); //建立Circle類物件c1,c2,引數為圓半徑 Rectangle r1(4.5,8.4),r2(5.0,2.5); //建立Rectangle類物件r1,r2,引數為矩形長、寬 Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle類物件t1,t2,引數為三角形底邊長與高 Shape *pt[6]={&c1,&c2,&r1,&r2,&t1,&t2}; //定義基類指標陣列pt,各元素指向一個派生類物件 double areas=0.0; //areas為總面積 for(int i=0; i<6; i++) { areas=areas + pt[i]->area(); } cout<<"totol of all areas="<<areas<<endl; //輸出總面積 system("pause"); return 0; }
totol of all areas=648.148
請按任意鍵繼續. . .
經驗積累:
抽象基類一定不要忘了使用const,而且const每一步都要緊隨其後!