참조자 전달 선호하기(effective c++ 20)
2015. 7. 28. 03:53ㆍ프로그래밍/Effective C++
728x90
728x90
값에 의한 전달
객체전달
객체를 값으로 전달하면 생성자와 소멸자를 반복적으로 호출하여 매우 비효율적이다.
객체손실
Derived Class의 객체를 Base Class의 객체로 인자를 전달하는 경우, Derived Class 객체의 특징이 잘려버리는 것.
상수객체에 대한 참조자(reference-to-const)로 전달하게 만드는 것이다.
무조건 참조자에 의한 전달이 좋은가?
기본 제공 타입
기본제공 타입에 대해서는 ‘값에 의한 전달’을 선택하더라도 엉터리가 아니고 더 효율 적일때가 많다.
STL과 함수객체
STL의 반복자와 함수 객체는 값으로 전달하는 것이 효율 적이다. (예전부터 반복자와 함수 객체는 값으로 전달이 효율적인 구조로 설계되어있다.)
반복자와 함수 객체 구현 원칙
복사 효율을 높일 것.
복사손실 문제에 노출되지 않도록 만들 것.
정리
'값에 의한 전달'보다는 '상수 객체 참조자에 의한 전달'을 선호하자. 대체적으로 효율적이며 복사손실 문제를 막아준다.
기본 제공 타입과 STL 반복자, 함수 객체 타입에는 맞지 않다. 이들은 '값에 의한 전달'이 더 적절하다.
728x90
반응형
'프로그래밍 > Effective C++' 카테고리의 다른 글
객체 생성과 소멸에 가상함수 호출하지 않기(effective c++ 09) (0) | 2015.08.02 |
---|---|
소멸자와 예외처리(effective c++ 08) (0) | 2015.08.02 |
다형성 가진 기본 클래스의 가상 소멸자(effective c++ 07) (0) | 2015.08.02 |
디폴트들 사용금지령(effective c++ 06) (0) | 2015.07.27 |
컴파일러의 디폴트 제공 함수들(effective c++ 05) (0) | 2015.07.27 |
const 들이대기(effective c++ 03) (0) | 2015.07.27 |
#define 안녕(effective c++ 02) (0) | 2015.07.27 |