《C++第十三週實驗報告4-1》---設計一個抽象類CSolid,含有兩個求表面積及體積的純虛擬函式。 設計個派生類CCube、CBall、CCylinder,分別表示正方體、球體及圓柱體。...
阿新 • • 發佈:2019-02-13
/* 【任務4】設計一個抽象類CSolid,含有兩個求表面積及體積的純虛擬函式。 設計個派生類CCube、CBall、CCylinder,分別表示正方體、球體及圓柱體。 在main()函式中,定義基類的指標p(CSolid *p;),利用p指標,輸出正方體、球體及圓柱體物件的表面積及體積。 */ /* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: CSolid.cpp * 作 者: 計114-3 王興鋒 * 完成日期: 2012 年 5 月 15 日 * 版 本 號: V 1.0 */ #include <iostream> using namespace std; #define PI 3.1415926 //抽象類 class CSolid { public: virtual double area() {return 0.0;} virtual double getV() {return 0.0;} }; //定義正方體類 class CCube : public CSolid { private: double l; public: CCube(double l){this->l = l;} double area(){return 6*l*l;} double getV() {return l*l*l;} }; //定義球體類 class CBall : public CSolid { private: double r; public: CBall(double r){this->r = r;} double area(){return 4*PI*r*r;} double getV() {return 4*PI*r*r*r/3;} }; //定義圓柱體類 class CCylinder : public CSolid { private: double r, h; public: CCylinder(double r, double h){this->r = r, this->h = h;} double area(){return (2*PI*r*r + 2*PI*r*r * h);} double getV() {return h*PI*r*r;} }; void show(CSolid *p); int main() { //定義各類物件 CCube cc(12.6); CBall cb(4.5); CCylinder ccy(4.5, 8.4); cout << "CCube cc(12.6)" << endl; show(&cc); cout << "CBall cb(4.5);" << endl; show(&cb); cout << "CCylinder ccy(4.5, 8.4);" << endl; show(&ccy); system("pause"); return 0; } //定義輸出函式 void show(CSolid *p) { cout << "表面積:" << p->area() << endl; cout << "體積:" << p->getV() << endl; } /* CCube cc(12.6) 表面積:952.56 體積:2000.38 CBall cb(4.5); 表面積:254.469 體積:381.704 CCylinder ccy(4.5, 8.4); 表面積:1196 體積:534.385 請按任意鍵繼續. . . */