#include "Point.h"

#include <iostream>
#include <cmath>

Point::Point(const int x, const int y) : x_(x), y_(y) {
  std::cout << "Point 2-arg ctor x: " << x << ", y: " << y << std::endl;
}

Point::Point(const Point& pt) : x_(pt.x_), y_ (pt.y_) {
  std::cout << "Point cctor x: " << x_ << ", y: " << y_ << std::endl;
}

Point::~Point() {
  std::cout << "Running Point dtor" << std::endl;
}

double Point::Distance(const Point& p) const {
  // We can access p's x_ and y_ variables either through the
  // get_x(), get_y() accessor functions, or the x_, y_ private
  // member variables directly, since we're in a member function of
  // the same class.
  double distance = (x_ - p.get_x()) * (x_ - p.get_x());
  distance += (y_ - p.y_) * (y_ - p.y_);
  return sqrt(distance);
}

void Point::SetLocation(const int x, const int y) {
  x_ = x;
  y_ = y;
}