6.14作业,建立3个container的派生类cube,sphere,cylinder,让每一个派生类都包含虚函数surface_area()和volume(),写出主程序,应用于c++的多态性

来源:互联网 发布:filter java 编辑:程序博客网 时间:2024/06/05 09:48
#include<iostream>
#include<string>
using namespace std;
class container{
public:
container(double radius)
{
r = radius;
}
virtual double surface_area()=0;
virtual double volume()=0;
protected:
double r;
};
class cube :public container
{
public:
cube(double radius) :container(radius)
{}
double surface_area()
{
cout << "这个正方体的表面积是:"<< 6 * r*r << endl;
return 0;
}
double volume()
{
cout << "这个正方体的体积是:" << r*r*r << endl;
return 0;
}
};
class sphere :public container
{
public:
sphere( double radius) :container(radius)
{}
double surface_area()
{
cout << "这个球体的表面积是:" <<4*3.14*r*r << endl;
return 0;
}
double volume()
{
cout << "这个球体的体积是:" <<3.14*r*r*r*4/3 << endl;
return 0;
}
};
class cylinder :public container

public:
cylinder(double radius, double height) :container(radius)
{
h = height;
}
double surface_area()
{
cout << "这个圆柱体的表面积是:" <<2*3.14*r*r+2*3.14*r*h << endl;
return 0;
}
double volume()
{
cout << "这个圆柱体的体积是:" <<3.14*r*r*h<<endl;
return 0;
}
private :
double h;
};
int main()
{
container *ptr;
cube c1(6.0);
sphere s1(5.0);
cylinder cy1(5.0, 6.0);
ptr = &c1;
ptr->surface_area();
ptr->volume();
ptr = &s1;
ptr->surface_area();
ptr->volume();
ptr = &cy1;
ptr->surface_area();
ptr->volume();
return 0;
}
0 0
原创粉丝点击