#include<iostream>
using namespace std;
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //抽象类container的构造函数
virtual double surface_area()=0; //纯虚函数surface_area
virtual double volume()=0; //纯虚函数volume
};
container::container(double radius1) //定义抽象类container的构造函数
{radius=radius1;}
class cube:public container //声明正方体派生类
{
public:
cube(double radius1):container(radius1){}
double surface_area()
{
cout<<"正方体的边长为:"<<radius<<endl
<<"\t正方体的表面积为:"<<6*radius*radius;
return 0;
}
double volume()
{
cout<<"\t正方体的体积为:"<<radius*radius*radius<<endl;
return 0;
}
};
class sphere:public container //声明球体派生类
{
public:
sphere(double radius1):container(radius1){}
double surface_area()
{
cout<<"球体的半径为:"<<radius<<endl
<<"\t球体的表面积为:"<<4*3.14*radius*radius;
return 0;
}
double volume()
{
cout<<"\t球体的体积为:"<<4*radius*radius*radius/3<<endl;
return 0;
}
};
class cylinder:public container //声明圆柱体派生类
{
private:
double h;
public:
cylinder(double radius1,double h1):container(radius1)
{h=h1;}
double surface_area()
{
cout<<"圆柱体的半径为:"<<radius
<<"\t圆柱体的高为:"<<h<<endl
<<"\t圆柱体的表面积为:"<<(2*2*3.14*radius+2*3.14*radius*h);
return 0;
}
double volume()
{
cout<<"\t圆柱体的体积为:"<<3.14*radius*radius*h<<endl;
return 0;
}
};
int main()
{
container *pc; //对象指针
cube cu(5.0);
sphere sp(6.0);
cylinder cy(5.0,6.0);
pc=&cu;
pc->surface_area();
pc->volume();
pc=&sp;
pc->surface_area();
pc->volume();
pc=&cy;
pc->surface_area();
pc->volume();
return 0;
}
6.14
最新推荐文章于 2022-04-23 11:46:33 发布