问题及代码:
运算结果:
/*copyright(c)2016.烟台大学计算机学院
* All rights reserved,
* 文件名称:text.Cpp
* 作者:吴敬超
* 完成日期:2016年5月25日
* 版本号:codeblock
*
* 问题描述: 立体类族共有的抽象类
* 输入描述:
* 程序输出: 输出结果
*/
#include<iostream>
using namespace std;
#define PI 3.14
class CSolid
{
public:
virtual void area()=0;
virtual void volume()=0;
};
class CCube:public CSolid
{
public:
CCube();
CCube(double l):length(l){}
void area()
{
cout<<"正方体的表面积为:"<<endl;
cout<<length*length*6<<endl;
}
void volume()
{
cout<<"正方体的体积为:"<<endl;
cout<<length*length*length<<endl;
}
private:
double length;
double width;
double high;
};
class CBall:public CSolid
{
public:
CBall();
CBall(double r):radius(r){}
void area()
{
cout<<"球体的表面积为:"<<endl;
cout<<4*PI*radius*radius<<endl;
}
void volume()
{
cout<<"球体的体积为:"<<endl;
cout<<(4/3)*PI*radius*radius*radius<<endl;
}
private:
double radius;
};
class CCylinder:public CSolid
{
public:
CCylinder();
CCylinder(double r,double h):radius(r),high(h){}
void area()
{
cout<<"圆柱体的表面积为:"<<endl;
cout<<2*PI*radius*high+2*PI*radius*2<<endl;
}
void volume()
{
cout<<"圆柱体的体积为:"<<endl;
cout<<PI*radius*radius*high<<endl;
}
private:
double radius;
double high;
};
int main()
{
CSolid *p;
CCube c(2);
p=&c;
p->area();
p->volume();
CBall b(5);
p=&b;
p->area();
p->volume();
CCylinder y(5,6);
p=&y;
p->area();
p->volume();
return 0;
}
运算结果: