/*
*Copyright (c) 2014, 烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:于凯
*完成日期:2015年6月4日
*版本号:v1.0
*/
#include <iostream>
using namespace std;
class CSolid
{
public:
virtual void area()=0;
virtual void volume()=0;
};
class CCube:public CSolid
{
public:
CCube(double l):length(l) {}
void area()
{
cout<<"正方体的表面积是:"<<6*length*length<<endl;
}
void volume()
{
cout<<"正方体的体积是:"<<length*length*length<<endl;
}
private:
double length;
};
class CCylinder:public CSolid
{
public:
CCylinder(double r,double h):rad(r),height(h) {}
void area()
{
cout<<"圆柱体的表面积是:"<<2*3.14*rad*(rad+height)<<endl;
}
void volume()
{
cout<<"圆柱体的体积是:"<<3.14*rad*rad*height<<endl;
}
private:
double rad;
double height;
};
class CBall:public CSolid
{
public:
CBall(double r):rad(r) {}
void area()
{
cout<<"球体的表面积是:"<<4*3.14*rad*rad<<endl;
}
void volume()
{
cout<<"球体的体积是:"<<3.14*rad*rad*rad*4/3<<endl;
}
private:
double rad;
};
int main()
{
CSolid *p;
CCube cu(5.5);
p=&cu;
cout<<"边长为5.5的正方体\n表面积为:";
p->area();
cout<<"体积为";
p->volume();
cout<<endl;
CBall ba(7.8);
p=&ba;
cout<<"半径为7.8的球体\n表面积为:";
p->area();
cout<<"体积为:";
p->volume();
cout<<endl;
CCylinder cy(4.2,8.4);
cout<<"半径为4.2高为8.4的圆柱体的\n表面积为:";
p->area();
cout<<"体积为:";
p->volume();
cout<<endl;
return 0;
}
运行结果: