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

来源:互联网 发布:手提包女士知乎 编辑:程序博客网 时间:2024/05/17 22:57
/**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
原创粉丝点击