第十三周项目六 立体类族共有的抽象类

来源:互联网 发布:php采购系统源代码 编辑:程序博客网 时间:2024/06/06 00:45
/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:舒文超 * 完成日期:2016年5月22日 * 版本号:vc++6.0 * 问题描述:设计一个抽象类CSolid,含有用于求表面积            及体积的两个纯虚函数。设计派生类CCube、            CBall、CCylinder,分别表示正方体、球体            及圆柱体。在main()函数中,定义CSolid *p;            (p是指向基类的指针,且这个基类是个抽象类)。            要求利用这个p指针,能够求出正方体、球体及圆            柱体对象的表面积及体积。 */#include<iostream>#define Pi 3.1415926using namespace std;class CSolid{public:    virtual double get_area() const=0;    virtual double get_volum() const=0;};class CCube:public CSolid{private:    double height;    double weight;    double longth;public:    CCube(double h,double w,double l):height(h),weight(w),longth(l){}    virtual double get_area() const    {        return 2*(height*weight+longth*height+longth*weight);    }    virtual double get_volum() const    {        return height*weight*longth;    }};class CBall:public CSolid{private:    double R;public:    CBall(double r):R(r){}    virtual double get_area() const    {        return 4*Pi*R*R;    }    virtual double get_volum() const    {        return (4/3.0)*Pi*R*R*R;    }};class CCylinder:public CSolid{private:    double R;    double height;public:    CCylinder(double r,double h):R(r),height(h){}    virtual double get_area() const    {        return Pi*R*R*2.0+(2.0*Pi*R*height);    }    virtual double get_volum() const    {        return Pi*R*R*height;    }};int main(){    double a,b,c;    double s,v;    cout<<"请输入长方体的长宽高"<<endl;    cout<<"longth:";    cin>>a;    cout<<"weight:";    cin>>b;    cout<<"height:";    cin>>c;    CCube C1(c,b,a);    cout<<"请输入球体的半径"<<endl;    cout<<"R:";    cin>>a;    CBall C2(a);    cout<<"请输入圆柱的底面半径和高"<<endl;    cout<<"R:";    cin>>a;    cout<<"height:";    cin>>b;    CCylinder C3(a,b);    CSolid *p[3]= {&C1,&C2,&C1}; //定义基类指针数组p,使它每一个元素指向一个派生类对象    for(int i=0; i<6; i++)    {        s=p[i]->get_area();        v=p[i]->get_volum();        cout<<"表面积为:"<<s<<endl;        cout<<"体积为:"<<v<<endl;    }    return 0;}

0 0
原创粉丝点击