第13周项目4:立体类族共有的抽象类

来源:互联网 发布:姜gary结婚知乎 编辑:程序博客网 时间:2024/06/05 01:06
/* * Copyright(c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:第13周项目4:立体类族共有的抽象类 * 作者:于子娴 * 完成日期:2016.6.1 * 版本号:v1.0 * * 问题描述:设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 * 输入描述: * 程序输出: */#include <iostream>using namespace std;class CSolid{public:    virtual double area()const=0;    virtual double volumn()const=0;};class CCube:public CSolid   //正方体{public:    CCube(double aa):a(aa){}    virtual double area()const    {        return 6*a*a;    }    virtual double volumn()const    {        return a*a*a;    }private:    double a;};class CBall:public CSolid   //球体{public:    CBall(double radius):r(radius){}    virtual double area()const    {        return 4*3.14159*r*r;    }    virtual double volumn()const    {        return 4.0/3*3.14159*r*r*r;    }private:    double r;};class CCylinder:public CSolid   //圆柱体{public:    CCylinder(double radius,double height):r(radius),h(height){}    virtual double area()const    {        return 2*3.14159*r*h+2*3.14159*r*r;    }    virtual double volumn()const    {        return 3.14159*r*r*h;    }private:    double r;    double h;};int main(){    CSolid *p;    double s,v;    CCube x(2.5);    cout<<"立方体边长为2.5"<<endl;    p=&x;    s=p->area( );    v=p->volumn( );    cout<<"表面积:"<<s<<endl;    cout<<"体积:"<<v<<endl;    cout<<endl;    CBall y(3.4);    cout<<"球体半径为3.4"<<endl;    p=&y;    s=p->area( );    v=p->volumn( );    cout<<"表面积:"<<s<<endl;    cout<<"体积:"<<v<<endl;    cout<<endl;    CCylinder z(5.2,6.1);    cout<<"圆柱体底面半径、高分别为5.2,6.1"<<endl;    p=&z;    s=p->area( );    v=p->volumn( );    cout<<"表面积:"<<s<<endl;    cout<<"体积:"<<v<<endl;    cout<<endl;    return 0;}

运行结果:

0 0
原创粉丝点击