본문 바로가기
스터디/C++

[ C++ ] 연산자 오버로딩의 교환 법칙

by 알 수 없는 사용자 2019. 10. 10.

교환 법칙이란 'A+B= B+A'을 뜻한다.

즉, 피연산자의 위치는 연산의 결과에 아무런 영향을 미치지 않는다는 법칙인데, 대표적으로 곱셈 연산과 덧셈 연산이 있다.

 

먼저 예제를 보자.

 

Dot 클래스에 곱셈 연산자가 오버로딩이 되어있다.

객체 * 뒤에 int형 데이터가 오면 x와 y좌표 값을 데이터만큼 곱해준다.

 

그래서 dot2는 dot1에 2를 곱하여 x좌표가 2, y좌표가 4가 된 것을 확인할 수 있다.

 

근데 교환법칙에 의해 * 뒤에 객체가 오게 되면 어떻게 해야 할까? 

 

이런 문제가 발생한다.

 

이전 연산자 오버로딩 포스트에서 전역 함수에 의한 연산자 오버 로딩이 필요한 경우가 있다고 했는데,

이럴 때 필요하다.

 

다음과 같이 해결하면 된다.

 

그럼 전역함수에 의해서 멤버 함수의 연산자 오버 로딩에 접근할 수 있다.

그리고 저번과 같이 전역함수에서 private 멤버에 직접 접근하는 경우는 사라졌다.