1572
2013-05-14 00:21:57
1
연산자 오버로딩의 기본 원칙을 아직 모르시는거 같은 느낌이 듭니다.
모든 연산은 연산자와 피 연산자로 우선 구분이 되지요. + 연산자는 피 연산자가 2개입니다.
예를 들어 Student 객체 a, b가 있을대 두 객체의 합을 연산자 오버로딩 한다면 a + b 라고 표현하겠죠.
a + b를 한다는건 a 객체의 operator + 맴버함수를 호출하는것과 같습니다. (물론 맴버함수가 아닌 그냥 함수로 오버로딩 할수도 있지만 이건 제외하고)
바꾸어서 쓰면 a.operator+(b); 입니다. 즉 맴버로의 연산자 오버로딩은 객체 자신의 맴버 함수를 호출하게 되므로 피 연산자는 한개로 줄어듭니다.
결국 함수 선언은 Student & operator+ (Student & b); 이렇게 되어야 하는 것이죠.