ostream & operator<<(ostream &output,const Point &p)
{
output<<"point:["<
}
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=["<
}
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 &);
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=["<
}
int main()
{
Point p(3.5,6.4);
cout<<"x="<
cout<<"p:"< Circle c(1.2,2.2,3.2);
cout<<"original circle:x="<
cout<<"new circle:"<
cout<<"original Cylinder:x="<
cy1.setRadius(2.1);
cy1.setHeight(3);
cout<<"new Cylinder:"<
}
运行结果: