const Rational& operator*( const Rational& lsh, const Rational& ths )

{

Rational result( lsh.n * rhs.n, lhs.d * rhs.d );

return result;

};


복사생성자가 한번더 불리는게 싫어서 이렇게 한다면

지역객체의 경우엔 return과 동시에 소멸된다.


result안에 기본자료형만 있으면 다행인데 여러 객체가 있다면 버그를 만든다.


객체를 반환하여 생기는 복사생성 비용은 안전하게 하는데 드는 비용일 뿐이고

실제로 그리 비용이 많이 들지 않는다.