第十二章课后习题
1、修改例12.1(P381)
#include<iostream>
using namespace std;
class Point{
public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX() const{
return x;
}
float getY() const{
return y;
}
friend ostream &operator <<(ostream &,const Point&);
protected:
float x;
float y;
};
Point::Point(float a,float b){
x=a;
y=b;
}
void Point::setPoint(float a,float b){
x=a;
y=b;
}
ostream &operator <<(ostream &output,const Point &p){
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
class Circle:public Point{
public:
Circle(float x=0,float y=0,float r=0);
void setRadius(float);
float getRadius() const;
float area ()const;
friend ostream &operator <<(ostream &,const Circle &);
protected:
float radius;
};
Circle::Circle(float x,float y,float r):Point(x,y),radius(r){
}
void Circle::setRadius(float r){
radius=r;
}
float Circle::getRadius() const{
return radius;
}
float Circle::area() const{
return 3.1415926*radius*radius;
}
ostream &operator <<(ostream &output,const Circle &c){
output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<",area="<<c.area()<<endl;
return output;
}
class Cylinder:public Circle{
public:
Cylinder(float x=0,float y=0,float r=0,float h=0);
void setHeight(float );
float getHeight() const;
float area() const;
float Volume() const;
friend ostream& operator<<(ostream &,const Cylinder&);
protected:
float height;
};
Cylinder::Cylinder(float x,float y,float r,float h):Circle(x,y,r),height(h){
}
void Cylinder::setHeight(float h){
height=h;
}
float Cylinder::getHeight() const{
return height;
}
float Cylinder::area() const{
return 3.1415926*2*radius*height+2*3.14159262*radius*radius;
}
float Cylinder::Volume() const{
return 3.1415926*radius*radius*height;
}
ostream& operator<<(ostream &output,const Cylinder &cy){
output<<"Center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<endl
<<"area="<<cy.area() <<",volume="<<cy.Volume() <<endl;
return output;
}
int main(){
cout<<"**********************************************"<<endl;
Point p(3.5,6.4);
cout<<"x="<<p.getX() <<",y="<<p.getY() <<endl;
cout<<"original p:"<<endl<<p<<endl;
p