Inflearn Community Q&A
질문
Written on
·
211
2
4:48 에 "operator<< " 를 멤버함수로 만들 수 없다고 하시고
그 이유에 대해 첫번째 파라미터가 std::ostream& out 이어서 그렇다고 하셨는데, 좀더 자세하게 설명해주실수 있으실까요~?
c++
Quiz
사용자 정의 타입에 대해 연산자 오버로딩을 하는 주된 목적은 무엇일까요?
코드 실행 속도를 빠르게 하기 위해
사용자 정의 타입을 내장 타입처럼 자연스럽게 사용하기 위해
객체의 메모리 관리를 자동화하기 위해
클래스의 상속 관계를 정의하기 위해
Answer 1
3
안녕하세요, 답변 도우미 Soobak 입니다.
연산자 오버로딩을 클래스의 멤버 함수로 정의할 때, 멤버 함수의 첫 번째 매개변수는 항상 해당 클래스의 인스턴스(this 포인터)가 되어야 합니다.
이 때, 표준 라이브러리의 operator << 의 경우, 첫 번째 매개변수는 항상 std::ostream 과 같은 출력 스트림에 대한 참조 형태이기 때문에, 이를 특정 클래스의 멤버 함수로 정의하지 못하는 것입니다.
따라서, 강의에서와 같이 입출력 연산자 operator << 의 오버로딩은 클래스의 private 멤버에 접근할 수 있으면서도 클래스 밖에서 정의될 수 있는 friend 함수로 정의합니다.





