第八章 继承与派生习题
7
double x,y;
public :
Point(){x = 0; y = 0; }
Point(double xv,double yv){x = xv;y = yv;}
Point(Point& pt){ x = pt.x; y = pt.y; }
double getx(){ return x;}
double gety(){ return y;}
double Area(){ return 0;}
void Show(){cout<<"x="<<x<<' '<<"y="<<y<<endl;}
};
class Circle : public Point{
double radius;
public :
Circle(){radius = 0;}
Circle( double xv,double yv,double vv):Point(xv,yv){radius = vv;}
Circle(Circle& cc):Point(cc){radius = cc.radius;} //拷贝构造函数
double Area(){ return PI*radius*radius;}
void Show(){ //注意怎样访问基类的数据成员
cout<<"x="<<getx()<<'\t'<<"y="<<gety()<<'\t'<<"radius="<<radius<<endl;
}
int position(Point &pt){
double distance = sqrt((getx()-pt.getx())*(getx()-pt.getx())
+(gety()-pt.gety())*(gety()-pt.gety()));
double s=distance-radius;
if (s==0) return 0; //在圆上
else if (s<0) return -1; //在圆内
else return 1; //在圆外
}
};
class Rectangle:public Point{
double width,length;
public :
Rectangle(){width=0; length=0; }
Rectangle(double xv,double yv,double wv, double lv):Point(xv,xv) {
width = wv;
length= lv;
}
Rectangle(Rectangle& rr):Point(rr){
width = rr.width;
length = rr.length;
}
double Area(){ return width*length;}
void Show(){
cout<<"x="<<getx()<<'\t'<<"y="<<gety()<<'\t';