#include<iostream>
using namespace std;
class container
{
protected:
double radius;
public:
container(double radius1)
{radius=radius1;}
virtual double surface_area()=0;
virtual double volume()=0;
};
class cube:public container
{
public:
cube(double radius1):container(radius1)
{};
virtual double surface_area()
{cout<<"正方体的表面积为:"<<6*radius*radius<<endl;
return 0;}
virtual double volume()
{cout<<"正方体的体积为:"<<radius*radius*radius<<endl;
return 0;}
};
class sphere:public container
{
public:
sphere(double radius1):container(radius1)
{};
virtual double surface_area()
{cout<<"球的表面积为:"<<4*3.14*radius*radius<<endl;
return 0;}
virtual double volume()
{cout<<"球的体积为:"<<(4/3)*3.14*radius*radius*radius<<endl;
return 0;}
};
class cylinder:public container
{
public:
cylinder(double radius1,double h1):container(radius1)
{h=h1;}
virtual double surface_area()
{cout<<"圆柱体的表面积为:"<<2*3.14*radius*(h+radius)<<endl;
return 0;}
virtual double volume()
{cout<<"圆柱体的体积为:"<<3.14*radius*radius*h<<endl;
return 0;}
private:
double h;
};
int main()
{container *p;
cube c1(6.0);
sphere s1(5.0);
cylinder cy(5.0,6.0);
p=&c1;
p->surface_area();
p->volume();
p=&s1;
p->surface_area();
p->volume();
p=&cy;
p->surface_area();
p->volume();
return 0;
}