#include<iostream>
using namespace std;
class container
{
double radius;
public:
container(double radius1)
{radius=radius1;}
double Getterr()
{return radius;}
virtual void suface_area()=0;
virtual void volume()=0;
};
class cube:public container
{
public:
cube(double r1):container(r1)
{}
void suface_area()
{cout<<"边长为"<<Getterr()<<"的正方体表面积为:"<<6*Getterr()*Getterr()<<endl;}
virtual void volume()
{cout<<"边长为"<<Getterr()<<"的正方体体积为:"<<Getterr()*Getterr()*Getterr()<<endl;}
};
class sphere:public container
{ public:
sphere(double r):container(r)
{}
void suface_area()
{cout<<"半径为"<<Getterr()<<"的球表面积为:"<<4.0*Getterr()*Getterr()*Getterr()*3.14<<endl;}
virtual void volume()
{cout<<"半径为"<<Getterr()<<"的球体体积为:"<<1.3*3.14*Getterr()*Getterr()<<endl;}
};
class cylinder:public container
{
double h;
public:
cylinder(double r,double h1):container(r)
{h=h1;}
void suface_area()
{cout<<"半径为:"<<Getterr()<<" "<<"高为:"<<h<<" "<<"的圆柱体表面积为:"<<2*3.14*Getterr()*Getterr()+2*3.14*Getterr()*h<<endl;}
virtual void volume()
{
cout<<"半径为:"<<Getterr()<<" "<<"高为"<<h<<" "<<"的圆柱体体积为"<<3.14*Getterr()*Getterr()*h<<endl;
}
};
int main()
{
container* p;
cube a(6.0);
sphere b(5.0);
cylinder c(5.0,6.0);
p=&a;
p->suface_area();
p->volume();
p=&b;
p->suface_area();
p->volume();
p=&c;
p->suface_area();
p->volume();
return 0;
}