第十三周【项目3-立体类族共有的抽象类】

来源:互联网 发布:如何理解数组的概念 编辑:程序博客网 时间:2024/06/05 17:10
问题及代码:
 
/* 【项目3-立体类族共有的抽象类】 *Copyright (c) 2014,烟台大学计算机学院 *ALL right reserved *文件名: 形状类族的中的纯虚函数 *作者;童宇 *完成日期:2015 年 6月 3日 *版本号v1.0 *问题描述:            设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。            在main()函数中,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。            要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。 *输入描述: *程序输出: */#include <iostream>using namespace std;class CSolid{public:    virtual double SurfaceArea() =0;    virtual double Volume() =0;};class CCube:public CSolid //正方体{public:    CCube(double x):a(x){};    double SurfaceArea()    {        return 6*a*a;    }    virtual double Volume()    {        return a*a*a;    }private:    double a;};class CBall:public CSolid  //球体{public:CBall(double x):r(x){};    double SurfaceArea()    {        return 4*r*r*3.14159;    }    virtual double Volume()    {        return 4/3*r*r*r*3.14159;    }private:    double r;};class CCylinder:public CSolid  //圆柱体{public:CCylinder(double x,double y):r(x),h(y){};    double SurfaceArea()    {        return ((r*r*3.14159*2)+(h*2*r*3.14159));    }    virtual double Volume()    {        return h*r*r*3.14159;    }private:    double r,h;};int main( ){CSolid *p;double s,v;CCube x(30);cout<<"立方体边长为 30 "<<endl;p=&x;s=p->SurfaceArea( );v=p->Volume( );cout<<"表面积:"<<s<<endl;cout<<"体积:"<<v<<endl;cout<<endl;CBall y(4.5);cout<<"球体半径为 4.5 "<<endl;p=&y;s=p->SurfaceArea( );v=p->Volume( );cout<<"表面积:"<<s<<endl;cout<<"体积:"<<v<<endl;cout<<endl;CCylinder z(10,20);cout<<"圆柱体底面半径、高分别为 10, 20"<<endl;p=&z;s=p->SurfaceArea( );v=p->Volume( );cout<<"表面积:"<<s<<endl;cout<<"体积:"<<v<<endl;cout<<endl;return 0;}


运行结果:

0 0
原创粉丝点击