글번호
729954

RE:교재 5장 연산자 다중정의 문제 질문 드립니다

작성자
이병래
조회수
263
등록일
2024.11.29 10:31
수정일
2024.11.29 10:31

김지희 학생, 반갑습니다.


2항 연산자의 다중정의에 대한 질문이군요.

교재와 강의를 통해 설명한 것처럼 2항 연산자는 좌측 피연산자의 클래스의 멤버로 다중정의하거나

특정 클래스에 속하지 않는 연산자로 다중정의하는 방법이 있습니다.


문제에서 답항 ③의 + 연산자는 좌측 피연산자가 A 클래스의 객체이므로 A 클래스에 선언되어 있는 + 연산자를 사용합니다.

이 연산자는 우측 피연산자가 A 클래스의 객체이어야 하는데, int형 값으로 A 클래스의 객체를 생성하는 생성자가 선언되어 있으므로

int형 변수인 c의 값이 묵시적 형변환을 통해 A 클래스의 객체로 변환되어 동작하게 됩니다.


반면 답항 ④에서는 좌측 피연산자가 int형 변수인 c인데, 이 경우 C++의 기본 자료형인 int 자체를 우리가 수정할 수 없으므로

특정 클래스에 속하지 않는 연산자로 + 연산자를 다중정의를 해야 c + a 라는 연산을 할 수 있습니다.

이 경우 첫째 형식 매개변수는 int형, 둘째 형식 매개변수는 A 클래스의 상수 참조 형식이면 되겠습니다.

그런데 이 문제에는 이러한 연산자가 다중정의 되어 있지 않으므로 컴파일 과정에서 에러가 발생하게 됩니다.


이해에 도움이 되었기를 바랍니다.


이병래 교수

첨부파일
첨부파일이(가) 없습니다.