#include<iostream>
using namespace std;
class CSolid
{
public:
virtual void area()const=0;
virtual void volume()const=0;
};
class CCube:public CSolid
{
public:
CCube(double a):l(a){}
virtual void area()const
{
cout<<6*l*l<<endl;
}
virtual void volume()const
{
cout<<l*l*l<<endl;
}
private:
double l;
};
class CBall:public CSolid
{
public:
CBall(double r):R(r){}
virtual void area()const
{
cout<<2*3.14*R*R<<endl;
}
virtual void volume()const
{
cout<<((4/3)*3.14*R*R*R)<<endl;
}
private:
double R;
};
class CCylinder:public CSolid
{
public:
CCylinder(double a,double h):R(a),H(h){}
virtual void area()const
{
cout<<(2*3.14*R*R+2*3.14*R*H)<<endl;
}
virtual void volume()const
{
cout<<((3.14*R*R)*H)<<endl;
}
private:
double R;
double H;
};
int main()
{
CSolid *p;
CCube a1(2),a2(3);
CBall b1(2),b2(3);
CCylinder c1(2,3),c2(3,4);
p=&a1;
p->area();
p->volume();
p=&a2;
p->area();
p->volume();
p=&b1;
p->area();
p->volume();
p=&b2;
p->area();
p->volume();
p=&c1;
p->area();
p->volume();
p=&c2;
p->area();
p->volume();
return 0;
}
立体类族共有的抽象类
最新推荐文章于 2016-06-08 19:32:08 发布