21. 함수에서 객체를 반환해야 할 경우 참조자를 반환하려 하지 말자.
Posted 2012. 10. 19. 12:15const Rational& operator*( const Rational& lsh, const Rational& ths )
{
Rational result( lsh.n * rhs.n, lhs.d * rhs.d );
return result;
};
복사생성자가 한번더 불리는게 싫어서 이렇게 한다면
지역객체의 경우엔 return과 동시에 소멸된다.
result안에 기본자료형만 있으면 다행인데 여러 객체가 있다면 버그를 만든다.
객체를 반환하여 생기는 복사생성 비용은 안전하게 하는데 드는 비용일 뿐이고
실제로 그리 비용이 많이 들지 않는다.
'BOOK > Effective C++ 3판' 카테고리의 다른 글
23. 멤버함수보다는 비멤버 비프랜드 함수와 더 가까워지자 (0) | 2012.10.19 |
---|---|
22. 데이터 멤버가 선언 될 곳은 private 영역임을 명심하자. (0) | 2012.10.19 |
20. 값에 의한 전달보다 상수객체 참조자에 의한 전달 방식을 택하는 편이 낫다 (0) | 2012.10.19 |
19. 클래스 설계는 타입 설계와 똑같이 취급하자 (0) | 2012.10.19 |
18. 인터페이스 설계는 제대로 쓰기는쉽게, 엉터리로 쓰기는 어렵게 (0) | 2012.10.19 |
- Filed under : BOOK/Effective C++ 3판