写一个程序,定义抽象基类container 由它派生出3个派生类,
sphere(球体),cylinder(圆柱体)cube(正方体)
用虚函数分别计算几种
写一个程序,定义抽象基类container 由它派生出3个派生类,
sphere(球体),cylinder(圆柱体)cube(正方体)
用虚函数分别计算几种图形的表面积和体积
此外,编写重载运算符函数,重载运算符>和<用于判断对象的大小。如b1>b2,返回值为真或者假。
大神能帮我看看,我的代码有什么问题吗?
#include<iostream.h>
class Container
{
protected:
double r;
double l;
public:
Container(double x=0,double y=0)
{
r=x;
l=y;
}
virtual int area()=0;//表面积
virtual int volume()=0;//体积
virtual int show()=0;
};
class Sphere:public Container{
public:
Sphere(double x=0,double y=0):Container(x,y)
{};
int area()
{
cout<<"这个球体的表面积:"<<4*3.14*r*r<<endl;
return 0;
}
int volume()
{
cout<<"这个球体的体积:"<<(4.0/3)*3.14*r*r*r<<endl;
return 0;
}
int show()
{
cout<<area()<<endl;
cout<<volume()<<endl;
return 0;
}
int operator>(Sphere& a,Sphere& b)
{
int i;
if(a.area()>b.area())
i=1;
else if(a.volume()>b.volume())
i=1;
else i=0;
return i;
}
int operator<(Sphere& a,Sphere& b)
{
int i;
if(a.area()<b.area())
i=1;
else if(a.volume()<b.volume())
i=1;
else i=0;
return i;
}
};//球体
class Cylinder:public Container{
public:
Cylinder(double x=0,double y=0):Container(x,y)
{};
int area()
{
cout<<"这个圆柱体的表面积:"<<2*3.14*r*r+2*3.14*r*l<<endl;
return 0;
}
int volume()
{
cout<<"这个圆柱体的体积:"<<3.14*r*r*l<<endl;
return 0;
}
int show()
{
cout<<area()<<endl;
cout<<volume()<<endl;
return 0;
}
int operator>(Cylinder& a,Cylinder& b)
{
int i;
if(a.area()>b.area())
i=1;
else if(a.volume()>b.volume())
i=1;
else i=0;
return i;
}
int operator<(Cylinder& a,Cylinder& b)
{
int i;
if(a.area()<b.area())
i=1;
else if(a.volume()<b.volume())
i=1;
else i=0;
return i;
}
};//圆柱体
class Cube:public Container{
public:
Cube(double x=0,double y=0):Container(x,y)
{};
int area()
{
cout<<"这个正方体的表面积:"<<6*r*r<<endl;
return 0;
}
int volume()
{
cout<<"这个正方体的体积:"<<r*r*r<<endl;
return 0;
}
int show()
{
cout<<area()<<endl;
cout<<volume()<<endl;
return 0;
}
int operator>(Cube& a,Cube& b)
{
int i;
if(a.area()>b.area())
i=1;
else if(a.volume()>b.volume())
i=1;
else i=0;
return i;
}
int operator<(Cube& a,Cube& b)
{
int i;
if(a.area()<b.area())
i=1;
else if(a.volume()<b.volume())
i=1;
else i=0;
return i;
}
};//正方体
int main()
{
Container *ptr;
Sphere b1(5.0),b2(4.0),b3,b4;
Cylinder c1(5.0,4.0),c2(4.0,7.0);
Cube c3(5.0),c4(6.0);
ptr=&b1;
ptr->area();
ptr->volume();
ptr=&b2;
ptr->area();
ptr->volume();
int i;
i=(b1>b2);
if(i==1)
{
cout<<b1.area()<<">"<<b2.area()<<"ture"<<endl;
cout<<b1.volume()<<">"<<b2.volume()<<"ture"<<endl;
}
else
{
cout<<b1.area()<<"<"<<b2.area()<<"false"<<endl;
cout<<b1.volume()<<"<"<<b2.volume()<<"false"<<endl;
}
/*ptr=&c1;
ptr->area();
ptr->volume();
ptr=&c2;
ptr->area();
ptr->volume();
ptr=&c3;
ptr->area();
ptr->volume();
ptr=&c4;
ptr->area();
ptr->volume();*/
return 0;
}