-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
질문
24.01.07 17:19 작성 조회수 80
1
4:48 에 "operator<< " 를 멤버함수로 만들 수 없다고 하시고
그 이유에 대해 첫번째 파라미터가 std::ostream& out 이어서 그렇다고 하셨는데, 좀더 자세하게 설명해주실수 있으실까요~?
답변을 작성해보세요.
1
Soobak
2024.01.07
안녕하세요, 답변 도우미 Soobak 입니다.
연산자 오버로딩을 클래스의 멤버 함수로 정의할 때, 멤버 함수의 첫 번째 매개변수는 항상 해당 클래스의 인스턴스(this
포인터)가 되어야 합니다.
이 때, 표준 라이브러리의 operator <<
의 경우, 첫 번째 매개변수는 항상 std::ostream
과 같은 출력 스트림에 대한 참조 형태이기 때문에, 이를 특정 클래스의 멤버 함수로 정의하지 못하는 것입니다.
따라서, 강의에서와 같이 입출력 연산자 operator <<
의 오버로딩은 클래스의 private
멤버에 접근할 수 있으면서도 클래스 밖에서 정의될 수 있는 friend
함수로 정의합니다.
답변 1