第十三周项目4

来源:互联网 发布:小袄淘宝网,金丝绒的 编辑:程序博客网 时间:2024/06/06 12:48
/*  *Copyright (c) 2016,烟台大学计算机学院  *All rights reserved.  *文件名称 :  *作 者 : 胡昌星 *完成日期 : 2016年5月26号  *版 本 号 : v6.0  *  *问题描述 : 设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。  *输入描述 : 无  *程序输出 :  */      #include<iostream>  using namespace std;  class Csolid  {  public:      virtual double area(){}      virtual double Volume(){}  };  class Ccube:public Csolid  {  protected:      double radius;  public:      Ccube(double r):radius(r){}      double area()      {          return 6.0*radius*radius;      }      double Volume()      {          return radius*radius*radius;      }  };  class Cball:public Csolid  {  protected:      double radius;  public:      Cball(double r):radius(r){}      double area()      {          return 4.0*3.1415926*radius*radius;      }      double Volume()      {          return 4.0*3.1415926*radius*radius/3.0;      }  };  class CCylinder:public Csolid  {  protected:      double radius;      double height;  public:      CCylinder(double r,double h):radius(r),height(h){}      double area()      {          return (2.0*3.1415926*radius*radius+2.0*3.1415926*radius*height);      }      double Volume()      {          return 3.1415926*radius*radius*height;      }  };  int main()  {      Csolid *p;      Ccube cb(2.0);      Cball bl(2.0);      CCylinder cl(2.0,1.0);      p=&cb;      cout<<"正方体的表面积:"<<p->area()<<endl;      cout<<"正方体的体积:"<<p->Volume()<<endl;      cout<<endl;       p=&bl;      cout<<"球体的表面积:"<<p->area()<<endl;      cout<<"球体的体积:"<<p->Volume()<<endl;      cout<<endl;       p=&cl;      cout<<"圆柱体的表面积:"<<p->area()<<endl;      cout<<"圆柱体的体积:"<<p->Volume()<<endl;      cout<<endl;      return 0;  }

0 0