#include<iostream>
using namespace std;
class CSolid
{
public:
virtual double area()=0;
virtual double volume()=0;
};
class CCube:public CSolid
{
private:
double dLong;
double dWidth;
double dHigh;
public:
CCube(double a,double b,double c):dLong(a),dWidth(b),dHigh(c){};
double area();
double volume();
};
double CCube::area()
{
double a;
a=dLong*dWidth+dHigh*dLong+dWidth*dHigh;
return a;
}
double CCube::volume()
{
return (dLong*dWidth*dHigh);
}
class CBall:public CSolid
{
private:
double dRadius;
public:
CBall(double a):dRadius(a){};
double area();
double volume();
};
double CBall::area()
{
double a;
a=4*3.14*dRadius*dRadius;
return a;
}
double CBall::volume()
{
double a;
a=3.14*dRadius*dRadius*dRadius*4/3;
return a;
}
class CCylinder:public CSolid
{
private:
double dRadius;
double dHigh;
public:
CCylinder(double a,double b):dRadius(a),dHigh(b){};
double area();
double volume();
};
double CCylinder::area()
{
double a;
a=2*(3.14*dRadius*dRadius)+(2*3.14*dRadius)* dHigh;
return a;
}
double CCylinder::volume()
{
double a;
a=(3.14*dRadius*dRadius)*dHigh;
return a;
}
int main()
{
CSolid *p;
CCube a(1,2,3);
p=&a;
cout<<"长方体的表面积"<<p->area()<<endl;
cout<<"长方体的体积"<<p->volume()<<endl;
CBall b(4);
p=&b;
cout<<"球体的表面积"<<p->area()<<endl;
cout<<"球体的体积"<<p->volume()<<endl;
CCylinder c(5,6);
p=&c;
cout<<"圆柱的表面积"<<p->area()<<endl;
cout<<"圆柱的体积"<<p->volume()<<endl;
return 0;
}
2015.6.3立体雷族的抽象类
最新推荐文章于 2015-06-07 12:14:12 发布