第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;  }