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