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

来源:互联网 发布:免费手机绘图软件 编辑:程序博客网 时间:2024/04/27 21:31

设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。

解决代码:

#include <iostream>using namespace std;class CSolid{public:    virtual double area() const =0;    virtual double volume() const =0;};class CCube: public CSolid    {        public:        CCube(double a):x(a) {};        virtual double area() const        {            return 6*x*x;        };        virtual double volume() const        {            return x*x*x;        };        protected:            double x;    };    class CBall: public CSolid    {    public:        CBall(double r):R(r) {};    virtual double area() const    {        return 4*3.1415926*R*R;    }    virtual double volume() const    {        return (4/3)*3.1415926*R*R*R;    }    protected:        double R;    };    class CCylinder: public CSolid    {    public:        CCylinder (double r,double h):radium(r),height(h) {};         virtual double area() const         {             return 2*3.1415926*radium*height;         }         virtual double volume() const         {             return 3.1415926*radium*radium*height;         }    protected:        double radium;        double height;    };int main(){    CSolid *p;    CCube cube(5.3);    CBall ball(8.3);    CCylinder cylinder(3.4,8.2);    p=&cube;    cout<<"正方体的表面积为:"<<p->area()<<endl;    cout<<"正方体的体积为:"<<p->volume()<<endl;    p=&ball;    cout<<"圆的表面积为:"<<p->area()<<endl;    cout<<"圆方体的体积为:"<<p->volume()<<endl;    p=&cylinder;    cout<<"圆柱体的表面积为:"<<p->area()<<endl;    cout<<"圆柱体的体积为:"<<p->volume()<<endl;    return 0;}


0 0