65,211
社区成员
发帖
与我相关
我的任务
分享class Point{
protected:
double x,y;
public:
static double PI;
public:
Point(double a=0,double b=0);
double xOffset()const;
double yOffset()const;
double angle()const;
double radius()const;
Point operator+(const Point & d)const;
Point & operator+=(const Point & d);
void moveTo(double a,double b);
void display();
friend ostream &operator<<(ostream &os,const Point &p)
{
os<<p.x<<" "<<p.y<<endl;
return os;
}
};
Point::Point(double a,double b):x(a),y(b){}
double Point::PI=3.14159265;
double Point::xOffset()const{return x;}
double Point::yOffset()const{return y;}
double Point::angle()const{return (180/PI)*atan2(y,x);}
double Point::radius()const{return sqrt(x*x+y*y);}
void Point::moveTo(double a,double b){x=a,y=b;}
void Point::display(){
cout <<x;}
class Circle :public Point{
double radius;
public:
Circle(const Point&p=Point(),double r=0);
double getRadius()const;
Point getPoint()const;
double getCircum()const;
void moveTo(double a,double b);
void modifyRadius(double r);
};
Circle::Circle(const Point&p,double r):Point(p),radius(r){}
double Circle::getRadius()const{return radius;}
Point Circle::getPoint()const{return static_cast <const Point>(*this);}
double Circle::getCircum()const{return 2*radius*Point::PI;}
void Circle::moveTo(double a,double b){x=a,y=b;}
void Circle::modifyRadius(double r){radius=r;}
void main(){
Point a(2.3,5.6);
Circle c(a,7);
c.moveTo(1,2);
c.modifyRadius(3);
cout <<"the radius is" <<c.getRadius() <<"\n";
cout <<c.getPoint();
cout <<c.getCircum() <<"\n";
}