#include<iostream>
using namespace std;
const double PI= 3.14;
class container{
public:
container(double r1)
{
r = r1;
};
container(double r1,double h1 )
{
r = r1;
h= h1;
};
virtual void surface_area() = 0;
virtual void volume() = 0;
protected:
double r;
double h;
};
class cube:public container
{
public:
cube(double a) :container(a)
{}
void surface_area()
{
cout << "该正方体的边长为:" << r << "表面积为:" << 6*r*r<<endl;
}
void volume()
{
cout << "该正方体的边长为:" << r << "体积为:" << r*r*r <<endl;
}
};
class sphere :public container
{
public:
sphere(double a) :container(a)
{}
void surface_area()
{
cout << "该球体的半径为:" << r << "表面积为:" << 4*PI*r*r << endl;
}
void volume()
{
cout << "该球体的半径为:" << r<< "体积为:" <<4/3*PI*r*r*r << endl;
}
};
class cylinder :public container
{
public:
cylinder(double a,double b) :container(a,b)
{};
void surface_area()
{
cout << "该圆柱体的半径为:" << r << "高为:" << h << "表面积为:" << PI*r*r+2*PI*r*h<<endl;
}
void volume()
{
cout << "该圆柱体的半径为:" << r << "高为:" << h << "体积为:" << PI*r*r*h<< endl;
}
};
int main()
{
container *p;
cube i(6.0);
p = &i;
p->surface_area();
p->volume();
sphere j(5.0);
p = &j;
p->surface_area();
p->volume();
cylinder k(5.0,6.5);
p = &k;
p->surface_area();
p->volume();
return 0;
}
<img src="https://img-blog.youkuaiyun.com/20150516184326716?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU2FrdXJhcmFpbjc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />