참조자 전달 선호하기(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
반응형