본문 바로가기

오버로딩7

[ C++ ] 연산자 오버로딩의 교환 법칙 교환 법칙이란 'A+B= B+A'을 뜻한다. 즉, 피연산자의 위치는 연산의 결과에 아무런 영향을 미치지 않는다는 법칙인데, 대표적으로 곱셈 연산과 덧셈 연산이 있다. 먼저 예제를 보자. Dot 클래스에 곱셈 연산자가 오버로딩이 되어있다. 객체 * 뒤에 int형 데이터가 오면 x와 y좌표 값을 데이터만큼 곱해준다. 그래서 dot2는 dot1에 2를 곱하여 x좌표가 2, y좌표가 4가 된 것을 확인할 수 있다. 근데 교환법칙에 의해 * 뒤에 객체가 오게 되면 어떻게 해야 할까? 이런 문제가 발생한다. 이전 연산자 오버로딩 포스트에서 전역 함수에 의한 연산자 오버 로딩이 필요한 경우가 있다고 했는데, 이럴 때 필요하다. 다음과 같이 해결하면 된다. 그럼 전역함수에 의해서 멤버 함수의 연산자 오버 로딩에 접근할.. 2019. 10. 10.
[ C++ ] 연산자를 오버로딩할 때 주의 할 점. 1. 본래의 의도를 벗어나지 않는다. ( +인데 더하지 않고 빼버리는 경우.. ) 2. 연산자의 우선순위와 결합성은 바뀌지 않는다. 3. 매개변수의 디폴트 값 설정이 불가능하다. 4. 연산자의 순수 기능은 뺏을 수 없다. 2019. 10. 10.
[ C++ ] 연산자 오버로딩 C++은 함수 오버 로딩뿐만 아니라 연산자도 오버 로딩이 가능하다. 연산자 오버로딩이 무엇일까? 말 그래도 연산자를 오버 로딩하는 것이다. 객체가 기본 자료형 변수처럼 덧셈, 뺄셈, 혹은 곱셈과 같은 연산들을 가능하게 하는 것이다. 즉, 객체도 기본 자료형 데이터처럼 취급한다고 생각하면 된다. 어떻게 하면 가능할까? 먼저 예제를 보자. 여기서 Dot은 x와 y좌표가 있는 점에 대한 클래스이다. dot1 객체는 x좌표가 1, y 좌표가 2이고 dot2 객체는 x좌표가 3, y 좌표가 4이다. 그리고 dot3은 dot1 객체와 dot2 객체를 + 연산자로 더한 객체이다. 실행 결과에서 dot3가 dot1과 dot2의 x좌표를 더한 값과 dot1과 dot2의 y좌표를 더한 값으로 멤버를 구성한 것을 확인할 수.. 2019. 10. 10.