#include<iostream>
#include<math.h>
using namespace std;
class container{ //声明抽象类container
protected:
double radius;
public:
container(double radius1); //构造函数
virtual double surface_area()=0; //纯虚函数surface_area
virtual double volume()=0; //纯虚函数volume
};
container::container(double radius1)
{
radius=radius1;
}
class cube:public container{ //定义派生类cube
public:
cube(double radius1):container(radius1)
{ };
double surface_area() //正方体的表面积
{
return radius*radius*6;
}
double volume() //正方体的体积
{
return pow(radius,3);
}
};
class sphere:public container{ //定义派生类sphere
public:
sphere(double radius1):container(radius1)
{ };
double surface_area() //球体的表面积
{
return 4*3.14*radius*radius;
}
double volume() //球体的体积
{
return 4/3*3.14*radius*radius*radius;
}
};
class cylinder:public container{ //定义派生类cylinder
private:
double height;
public:
cylinder(double radius1,double height1):container(radius1)
{
height=height1;
}
double surface_area() //圆柱体的表面积
{
return 2*3.14*radius*radius+2*3.14*radius*height;
}
double volume() //圆柱体的体积
{
return 3.14*radius*radius*height;
}
};
int main()
{
container *p; //定义基类指针
cube a(6.0);
sphere b(5.0);
cylinder c(5.0,6.0);
p=&a; //指针指向正方体
cout<<"正方体的表面积为:"<<p->surface_area()<<endl;
cout<<"正方体的体积为:"<<p->volume()<<endl<<endl;
p=&b; //指针指向球体
cout<<"球体的表面积为:"<<p->surface_area()<<endl;
cout<<"球体的体积为:"<<p->volume()<<endl<<endl;
p=&c; //指针指向圆柱体
cout<<"圆柱体的表面积为:"<<p->surface_area()<<endl;
cout<<"圆柱体的体积为:"<<p->volume();
return 0;
}
6.14纯虚数的派生类
最新推荐文章于 2018-09-28 11:40:01 发布