/*
*Copyright (c) 2014, 烟台大学计算机学院
*All rights reserved.
*文件名称:week13-3.cpp
*作者:高赞
*完成日期:2015年 5 月 29 日
*版本号:v1.0
*
*
*/
#include <iostream>
using namespace std;
double pai=3.141592653;
class CSolid
{
public:
virtual double area()=0;
virtual double volume()=0;
};
class CCube:public CSolid
{
public:
CCube(double a0=0):a(a0) {}
double area()
{
return 6*a*a;
}
double volume()
{
return a*a*a;
}
private:
double a;
};
class CBall:public CSolid
{
public:
CBall(double r0):r(r0) {}
double area()
{
return 4*pai*r*r;
}
double volume()
{
return (4/3)*pai*r*r*r;
}
private:
double r;
};
class CCylinder:public CSolid
{
public:
CCylinder(double r0,double h0):r(r0),h(h0) {}
double area()
{
return pai*r*r*2+2*r*pai*h;
}
double volume()
{
return pai*r*r*h;
}
private:
double r;
double h;
};
int main()
{
CSolid *p;
CCube a(2);
p=&a;
cout<<"正方体表面积:"<<p->area()<<",体积:"<<p->volume()<<endl;
CBall b(3);
p=&b;
cout<<"球体表面积:"<<p->area()<<",体积:"<<p->volume()<<endl;
CCylinder c(3,5);
p=&c;
cout<<"圆柱体表面积:"<<p->area()<<",体积:"<<p->volume()<<endl;
return 0;
}