第13周任务4
来源:互联网 发布:域名买卖平台 编辑:程序博客网 时间:2024/05/01 17:11
#include<iostream> #include<Cmath> using namespace std; const double P = 3.14; class CSolid//定义虚基类 { public: virtual double area() const = 0;//定义纯虚函数 virtual double volume() const = 0;//定义虚函数 }; class CCube:public CSolid { public: CCube(double l); ~CCube(); double area() const; double volume() const; double getl(); private: double len; }; class CBall:public CSolid { public: CBall(double r); ~CBall(); double area() const; double volume() const; double getr1(); private: double rang; }; class CCylinder:public CSolid { public: CCylinder(double r, double h); ~CCylinder(); double area() const; double volume() const; double getr2(); double geth(); private: double rang; double high; }; CCube::CCube(double l):len(l){} CCube::~CCube(){} double CCube::area() const { return 6 * len * len; } double CCube::volume() const { return len * len * len; } double CCube::getl() { return len; } CBall::CBall(double r):rang(r){} CBall::~CBall(){} double CBall::area() const { return 4 * P * rang * rang; } double CBall::volume() const { return ( 4 * P * rang * rang * rang) / 3; } double CBall::getr1() { return rang; } CCylinder::CCylinder(double r, double h):rang(r), high(h){} CCylinder::~CCylinder(){} double CCylinder::area() const { return ((2 * P * rang * rang) + (2 * P * rang) * high ); } double CCylinder::volume() const { return P * rang * rang * high; } double CCylinder::getr2(){return rang;} double CCylinder::geth(){return high;} int main() { CCube c1(1); CBall c2(2); CCylinder c3(3, 4); CSolid *p; p = &c1; cout << "边长为 " <<c1.getl() << " 的长方体的面积为: "; cout << p -> area() << endl; cout << "边长为 " << c1.getl() << " 的长方体的体积为: "; cout << p -> volume() << endl << endl; p = &c2; cout << "半径为 " << c2.getr1() << " 的球体的面积为: "; cout << p -> area() << endl; cout << "半径为 " <<c2.getr1() << " 的球体的体积为: "; cout << p -> volume() << endl << endl; p = &c3; cout << "半径为 " << c3.getr2() <<", 高为 " << c3.geth() << " 的圆柱体的面积为: "; cout << p -> area() << endl; cout << "半径为 " << c3.getr2() <<", 高为 " << c3.geth() << " 的圆柱体的体积为: "; cout << p -> volume() << endl; system("pause"); return 0; }