点类,圆类,圆柱类 (二)

2014-11-24 02:02:54 · 作者: · 浏览: 3

ostream & operator<<(ostream &output,const Point &p)
{
output<<"point:["< return output;
}
class Circle:public Point
{
public:
Circle(double x=0,double y=0,double r=0);
void setRadius(double);
double getRadius()const ;
double area()const;
friend ostream & operator<<(ostream &,const Circle &);
protected:
double radius;
};
Circle::Circle(double a,double b,double r):Point(a,b),radius(r){}
void Circle::setRadius(double r)
{
radius=r;
}
double Circle::getRadius()const
{
return radius;
}
double Circle::area()const
{
return 3.14159*radius*radius;
}
ostream & operator<<(ostream &output,const Circle &c)
{
output<<"center=["< return output;
}
class Cylinder:public Circle
{
public:
Cylinder(double x=0,double y=0,double r=0,double h=0);
void setHeight(double);
double getHeight()const;
double area()const;
double volume()const;
friend ostream & operator<<(ostream &,const Cylinder &);
protected:
double height;
};
Cylinder::Cylinder(double a,double b,double r,double h):Circle(a,b,r),height(h){}
void Cylinder::setHeight(double h)
{
height=h;
}
double Cylinder::getHeight()const
{
return height;
}
double Cylinder::area()const
{
return 2*Circle::area()+2*3.14159*radius*height;//求面积借用Circle的成员函数area的方式为Circle::area()
}
double Cylinder::volume()const
{
return Circle::area()*height;
}
ostream & operator<<(ostream &output,const Cylinder &cy)
{
output<<"center=["< return output;
}
int main()
{
Point p(3.5,6.4);
cout<<"x="< Circle c(1.2,2.2,3.2);
cout<<"original circle:x="< c.setPoint(5,5);
cout<<"new circle:"< Cylinder cy1(1.2,2.2,3.2,4.2);
cout<<"original Cylinder:x="< cy1.setPoint(5,5);
cy1.setRadius(2.1);
cy1.setHeight(3);
cout<<"new Cylinder:"< return 0;
}

运行结果:\