항목 23. 객체 반환시 레퍼런스를 반환하지 않는다.
이유
1. 존재하지 않는 객체를 레퍼런스로 반환 되어, 런타임 중 오류가 일어 날수 있다.
- 함수에서 생성한 객체를 반환하는 경우
주의점
1. 레퍼런스를 반환할지 객체를 복사하여 리턴할지는 고민된다면, 올바르게 동작하는것으로 리턴 해라.
2. 컴파일러 제공 회사가 가능한 비용이 적게 드는 방법을 발견하도록 맡겨 둘것
코드 최적화(RVO)를 컴파일러가 알아서 해주는 부분을 말하는것 같다
개인적인 생각
1. .. int 형 이하의 객체는 모두 값에 의한 전달을 하는게 속편하다.
2. 여전히 해결방법 1번을 잘 생각해 봐야 할것이다.
이유
1. 존재하지 않는 객체를 레퍼런스로 반환 되어, 런타임 중 오류가 일어 날수 있다.
- 함수에서 생성한 객체를 반환하는 경우
주의점
1. 레퍼런스를 반환할지 객체를 복사하여 리턴할지는 고민된다면, 올바르게 동작하는것으로 리턴 해라.
2. 컴파일러 제공 회사가 가능한 비용이 적게 드는 방법을 발견하도록 맡겨 둘것
코드 최적화(RVO)를 컴파일러가 알아서 해주는 부분을 말하는것 같다
개인적인 생각
1. .. int 형 이하의 객체는 모두 값에 의한 전달을 하는게 속편하다.
2. 여전히 해결방법 1번을 잘 생각해 봐야 할것이다.
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 28. 전역 네임스페이스를 분활한다. (0) | 2008.05.10 |
---|---|
항목 27. 의도하지 않은 내부 생성 맴버 함수의 이용을 명시적으로 막는다. (0) | 2008.05.10 |
항목 26. 잠재적 모호성을 경계한다. (0) | 2008.05.10 |
항목 25. 포인터나 수치형 타입상의 오버로딩을 피한다. (0) | 2008.05.10 |
항목 24. 함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다. (0) | 2008.05.10 |
항목 22. 값에 의한 호출보다는 레퍼런스에 의한 호출을 선호한다. (0) | 2008.05.10 |
항목 21. 가능한 const를 이용한다. (0) | 2008.05.10 |
항목 20. 데이터 멤버를 공용 인터페이스에 포함시키지 않는다. (3) | 2008.05.09 |
항목 19. 멤버 함수, 비멤버 함수 및 프렌드를 구별한다. (0) | 2008.05.09 |
항목 18. 최소한의 완전한 클래스 인터페이스를 구축한다. (0) | 2008.05.09 |
최근댓글