Operator Overloading - Sample
  Point Point::operator+(const Point &rhs) const
    point.x_ = x_ + rhs.x_;
    point.y_ = y_ + rhs.y_;
  Point Point::operator+(double a) const
    point.x_ = x_ + a;
    point.y_ = y_ + a;
    //std::cout<< "returning x "<<  point.x_<<"," << point.y_ <<std::endl;
  Point Point::operator-(double a) const
    point.x_ = x_ - a;
    point.y_ = y_ - a;
  Point Point::operator*(double a) const
    point.x_ = x_ * a;
    point.y_ = y_ * a;
  Point Point::operator%(double a) const
    double b = DegreesToRadians(a);
    double cosA=cos(b);
    double sinA=sin(b);
    point.x_ = (x_* cosA) - (y_*sinA);
    point.y_ = (x_* sinA) + (y_*cosA);
         if(point.x_ > -EPSILON && point.x_ < EPSILON)
      point.x_ = 0.0;
    if(point.y_ > -EPSILON && point.y_ < EPSILON)
      point.y_ = 0.0;
  double Point::operator-(const Point& p)
    double pointX= (p.x_ - x_) * (p.x_ - x_) ;
    double pointY= (p.y_ - y_) * (p.y_ - y_) ;
    dist = pointX + pointY;
    dist = sqrt(dist);
  Point Point:: operator^(const Point& p)
    point.x_ = ((x_+p.x_)/2);
    point.y_ = ((y_+p.y_)/2);
  Point& Point::operator+=(const Point& p)
  Point& Point::operator+=(double a)
  Point& Point::operator++() //prefix
  Point Point::operator++(int)
  Point Point::operator-()
  std::istream& operator>>(std::istream& is, Point& p)
  std::ostream& operator<<(std::ostream& os, const Point& p)
    os << "("<<p.x_ <<", "<<p.y_ << ")";