강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

꿀렁꿀렁님의 프로필 이미지
꿀렁꿀렁

작성한 질문수

홍정모의 따라하며 배우는 C++

9.2 입출력 연산자 오버로딩 하기

질문

작성

·

202

2

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

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

답변 1

3

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

 

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

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

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

꿀렁꿀렁님의 프로필 이미지
꿀렁꿀렁

작성한 질문수

질문하기