• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문

24.01.07 17:19 작성 조회수 80

1

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

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

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2024.01.07

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

 

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

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

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