연산자 위치는 왼쪽 피연산자가 누구인지로 정한다

멤버 함수는 왼쪽 피연산자가 this가 되고, 왼쪽이 내 타입이 아니면 전역 함수가 더 자연스럽습니다.

멤버 함수가 자연스러운 경우
p1 + p2
p1.operator+(p2)
왼쪽 피연산자 p1Point 객체라서 this로 받을 수 있습니다.
전역 함수가 필요한 경우
std::cout << p
operator<<(cout, p)
왼쪽은 ostream이므로 Point 멤버 함수로 만들 수 없습니다.
private 멤버를 출력해야 하면 전역 operator<<friend로 선언해 필요한 접근만 열어 줍니다.
판단: 왼쪽 피연산자가 내 타입이면 멤버 후보, 아니면 비멤버 함수 후보입니다.