您的位置:首页 > 其它

2015.6.3立体雷族的抽象类

2015-06-03 09:22 134 查看
#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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: