cout 연산자 오버로딩에서 '전역함수'에 의한 오버로딩이 필요한 이유가 뭔가요?
조회수 915회
<< 연산자의 오버로딩에 대한 부분을 읽던 중,
사용자가 정의한 class에 대해선 << 연산자 오버로딩을 하기 위해선 '전역함수'에 의한 오버로딩을 해야한다고 합니다.
하지만, 저는 이 이유에 대해서 명확하게 이해가 되지를 않네요..... ㅠㅠ 즉, 사용자 정의 클래스 Point에 대해서 그 인스턴스 p를 cout에 쓰려면
cout<<p;
cout.operator<<(p); // x
operator<<(cout, p); // ok
// 전역함수
otsream& operator <<(ostream& os, Point p);
와 같다네요, 이걸 전역함수로 선언해서 쓰니까 friend 키워드가 붙는건 당연하니까 이해가 되는데,
(1) 왜 멤버함수로 쓰지 않고, 전역함수로 쓰는지
(2) 왜 멤버함수일 때와 다르게, operator 원형에 파라미터가 2개인지(ostream&, Point)
이 두 가지가 이해가 안 되네요... 도와주세요!!
- 현재 보고 있는 사이트
(1) https://boxbop.tistory.com/66
(2) http://www.parkjonghyuk.net/lecture/program2/chap10.pdf -> 28p
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력