강의

멘토링

커뮤니티

Inflearn Community Q&A

hyuk0610's profile image
hyuk0610

asked

Following and Learning C++ with Hong Jeong-mo

9.2 Overloading Input/Output Operators

질문

Written on

·

202

2

4:48 에 "operator<< " 를 멤버함수로 만들 수 없다고 하시고

그 이유에 대해 첫번째 파라미터가 std::ostream& out 이어서 그렇다고 하셨는데, 좀더 자세하게 설명해주실수 있으실까요~?

c++

Answer 1

3

안녕하세요, 답변 도우미 Soobak 입니다.

 

연산자 오버로딩을 클래스의 멤버 함수로 정의할 때, 멤버 함수의 첫 번째 매개변수는 항상 해당 클래스의 인스턴스(this 포인터)가 되어야 합니다.

이 때, 표준 라이브러리의 operator << 의 경우, 첫 번째 매개변수는 항상 std::ostream 과 같은 출력 스트림에 대한 참조 형태이기 때문에, 이를 특정 클래스의 멤버 함수로 정의하지 못하는 것입니다.

따라서, 강의에서와 같이 입출력 연산자 operator << 의 오버로딩은 클래스의 private 멤버에 접근할 수 있으면서도 클래스 밖에서 정의될 수 있는 friend 함수로 정의합니다.

hyuk0610's profile image
hyuk0610

asked

Ask a question