#include <iostream>
using namespace std;
class CSolid
{
public:
virtual double Area()=0;
virtual double Volume ()=0;
};
class CCube :public CSolid//正方体
{
private:
double length;
public:
CCube (double l):length(l){}
virtual double Volume ()
{
return length*length*length;
}
virtual double Area()
{
return length*length*6;
}
};
class CBall:public CSolid//球
{
private :
double radius;
public:
CBall(double r):radius(r){}
virtual double Area ()
{
return 4*radius*radius*3.141592;
}
virtual double Volume ()
{
return 4/3*radius*radius*radius*3.141592;
}
};
class CCylinder:public CSolid//圆柱体
{
public:
CCylinder (double r,double h):radius(r),height (h){}
virtual double Area ()
{
return 2*3.141592*radius*height+2*radius*radius*3.141592;
}
virtual double Volume ()
{
return 3.141592*radius*radius*height;
}
private:
double radius,height;
};
int main()
{
CSolid *p;
CCube cube(5.64);
CBall ball(3.44);
CCylinder cylinder(3.55,6.4);
p=&cube;
cout<<"正方体的表面积为"<<p->Area()<<endl;
cout<<"正方体的体积为"<<p->Volume()<<endl;
p=&ball;
cout<<"球的表面积为"<<p->Area()<<endl;
cout<<"球的体积为"<<p->Volume()<<endl;
p=&cylinder;
cout<<"圆柱体的表面积为"<<p->Area()<<endl;
cout<<"圆柱体的体积为"<<p->Volume()<<endl;
return 0;
}
第十四周——项目3 立体类族共有的抽象类
最新推荐文章于 2017-10-17 22:07:00 发布