예를 들어서 두 수의 곱을 반환하는 함수가 있다고 했을 때, 반환하는 값은 Value 이어야지 Constant Reference 일 경우 많은 문제가 발생 할 수 있다.
class Value { public: Value(int i = 0); private: int v; friend const Value& operator* (const Value& l, const Value& r); }; Value a, b, c, d; if ((a * b) == (c * d)) { ... }
위의 예제를 보면 Call by Constant Reference 로 * 를 반환하였다. 아래의 if 비교문은 새로 생성된 개체에 대한 주소값을 비교하는 것으로 무조건 false값이 된다.
댓글 없음:
댓글 쓰기