스터디/C++
[ C++ ] 연산자 오버로딩의 교환 법칙
알 수 없는 사용자
2019. 10. 10. 19:44
교환 법칙이란 'A+B= B+A'을 뜻한다.
즉, 피연산자의 위치는 연산의 결과에 아무런 영향을 미치지 않는다는 법칙인데, 대표적으로 곱셈 연산과 덧셈 연산이 있다.
먼저 예제를 보자.
Dot 클래스에 곱셈 연산자가 오버로딩이 되어있다.
객체 * 뒤에 int형 데이터가 오면 x와 y좌표 값을 데이터만큼 곱해준다.
그래서 dot2는 dot1에 2를 곱하여 x좌표가 2, y좌표가 4가 된 것을 확인할 수 있다.
근데 교환법칙에 의해 * 뒤에 객체가 오게 되면 어떻게 해야 할까?
이런 문제가 발생한다.
이전 연산자 오버로딩 포스트에서 전역 함수에 의한 연산자 오버 로딩이 필요한 경우가 있다고 했는데,
이럴 때 필요하다.
다음과 같이 해결하면 된다.
그럼 전역함수에 의해서 멤버 함수의 연산자 오버 로딩에 접근할 수 있다.
그리고 저번과 같이 전역함수에서 private 멤버에 직접 접근하는 경우는 사라졌다.