立体类族共有的抽象类

输入代码:

/**Copyright (c)2015,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:sum123.cpp*作 者:林海云*完成日期:2015年6月13日*版 本 号:v2.0**问题描述:*程序输入:无设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。设计派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,,定义CSolid *p;(p是指向基类的指针,且这个基类是个抽象类)。要求利用这个p指针,能够求出正方体、球体及圆柱体对象的表面积及体积。*程序输出:各立体的表面积和体积*/#include <iostream>using namespace std;const double PI=3.1415926;// 抽象立体图形基类class CSolid{public:virtual double Area() const=0;virtual double Volume() const=0;};// 正方体类class CCube : public CSolid{public:CCube(double len=0);double Area() const;double Volume() const;private:double length;};CCube::CCube(double len){length=len;}double CCube::Area() const{double c;c=6*length*length;return c;}double CCube::Volume() const{double c;c=length*length*length;return c;}// 球体类class CBall : public CSolid{private:double radius;public:CBall(double r=0);double Area() const;double Volume() const;};CBall::CBall(double r){radius=r;}double CBall::Area() const{double c;c=4*PI*radius*radius;return c;}double CBall::Volume() const{double c;c=PI*radius*radius*radius*4/3;return c;}// 圆柱体类class CCylinder : public CSolid{private:double radius;double height;public:CCylinder(double r=0,double high=0);double Area() const;double Volume() const;};CCylinder::CCylinder(double r,double high){radius=r;height=high;}double CCylinder::Area() const{double c;c=2*PI*radius*radius+2*PI*radius*height;return c;}double CCylinder::Volume() const{double c;c=PI*radius*radius*height;return c;}int main( ){CSolid *p;double s,v;CCube x(30);cout<<"立方体边长为 30 "<<endl;p=&x;s=p->Area( );v=p->Volume( );cout<<"表面积:"<<s<<endl;cout<<"体积:"<<v<<endl;cout<<endl;CBall y(4.5);cout<<"球体半径为 4.5 "<<endl;p=&y;s=p->Area( );v=p->Volume( );cout<<"表面积:"<<s<<endl;cout<<"体积:"<<v<<endl;cout<<endl;CCylinder z(10,20);cout<<"圆柱体底面半径、高分别为 10, 20"<<endl;p=&z;s=p->Area( );v=p->Volume( );cout<<"表面积:"<<s<<endl;cout<<"体积:"<<v<<endl;cout<<endl;return 0;}运行结果:

人生并不在于获取,更在于放得下。放下一粒种子,收获一棵大树;

立体类族共有的抽象类

相关文章:

你感兴趣的文章:

标签云: