2가지 구현방법 (전역함수, 멤버함수)들중 멤버함수로 구현하게되면 생기는 문제...
A a(10);
std::cout << a;
여기서 멤버함수로 << 오버로딩을 구현한다면, 왼쪽 피연산자인 std::cout객체의 멤버함수 되어야한다.
그러면 연산자 오버로딩을 하기위해선, 우리가 std::cout이 선언되어있는 ostream클래스 내부에서 멤버함수를 구현해야하는데, ostream 클래스는 c++ 표준이므로 건들 수 없다.
결국 전역함수로 구현해야한다.
std::ostream& operator << (std::ostream &out, const Fixed &fixed)
{
out << fixed.toFloat();
return out;
}
마찬가지로 fixed의 private변수를 바로 가져다 사용하고싶으면 선언할때 friend class로 선언하면 된다.