#include<iostream>
using namespace std;
class wsq36_container{
protected:
double wsq36_radius;
public:
wsq36_container(double wsq36_radius1)
{
wsq36_radius=wsq36_radius1;
}
virtual double wsq36_surface_area()=0;
virtual double wsq36_volume()=0;
};
class wsq36_cube:public wsq36_container //声明一个正方体派生类cube
{ public:
wsq36_cube(double wsq36_radius1):wsq36_container(wsq36_radius1)
{ }
double wsq36_surface_area() //定义虚函数surface_area
{ return 6*wsq36_radius*wsq36_radius;
}
double wsq36_volume() //定义虚函数volume
{ return wsq36_radius*wsq36_radius*wsq36_radius;
}
};
class wsq36_sphere:public wsq36_container
{
public:
wsq36_sphere(double wsq36_radius1):wsq36_container(wsq36_radius1)
{}
double wsq36_surface_area()
{
return 3.14*wsq36_radius*wsq36_radius*4;
}
double wsq36_volume()
{
return 4/3*3.14*wsq36_radius*wsq36_radius;
}
};
class wsq36_cylinder: public wsq36_container //声明一个圆柱体派生类cylinder
{ double wsq36_height;
public:
wsq36_cylinder(double wsq36_radius1,double wsq36_height1):wsq36_container(wsq36_radius1)
{ wsq36_height=wsq36_height1;
}
double wsq36_surface_area() //定义虚函数surface_area
{ return 2*3.1416*wsq36_radius*(wsq36_radius+wsq36_height);
}
double wsq36_volume() //定义虚函数volume
{ return 3.1416*wsq36_radius*wsq36_radius*wsq36_height;
}
};
int main()
{
wsq36_container *wsq36_ptr;
wsq36_cube wsq36_obj1(5.0);
wsq36_sphere wsq36_obj2(5.0);
wsq36_cylinder wsq36_obj3(5.0,5.0);
wsq36_ptr=&wsq36_obj1; //指针ptr指向正方体类对象obj1
cout<<"这个正方体的表面积是:"<<wsq36_ptr->wsq36_surface_area()<<endl; //求正方体的表面积
cout<<"这个正方体的体积是:"<<wsq36_ptr->wsq36_volume()<<endl<<endl; //求正方体的的体积
wsq36_ptr=&wsq36_obj2; //指针ptr指向球体的类对象obj2
cout<<"这个球体表面积是:"<<wsq36_ptr->wsq36_surface_area()<<endl; //求球体的表面积
cout<<"这个球体的体积是:"<<wsq36_ptr->wsq36_volume()<<endl<<endl; //求球体的的体积
wsq36_ptr=&wsq36_obj3; //指针ptr指向圆柱体类的对象obj3
cout<<"这个圆柱体的表面积是:"<<wsq36_ptr->wsq36_surface_area()<<endl; //求圆柱体的表面积
cout<<"这个圆柱体的体积是:"<<wsq36_ptr->wsq36_volume()<<endl; //求圆柱体的的体积
system("pause");
return 0;
}