T value작은 값이거나 함수 내부 사본이 필요할 때.매개변수 형태는 함수가 원본을 어떻게 다룰지 말해준다
값, const 참조, 참조, 포인터는 성능 차이만이 아니라 함수의 의도를 드러내는 계약입니다. 선택 기준을 먼저 정하면 호출 코드가 더 읽기 쉬워집니다.
const T&큰 객체를 복사하지 않고 안전하게 읽을 때.T&null 확인 없이 호출자의 값을 바꿔야 할 때.T*없을 수도 있거나 다른 대상을 가리킬 수 있을 때.질문
선택
의도
복사가 부담스러운가?
읽기라면 const T&
큰 객체를 새로 만들지 않습니다.
호출자 값을 바꿔야 하는가?
T&
수정이 함수의 목적임을 드러냅니다.
null이 의미 있는가?
T*
대상이 없을 수 있음을 호출부에 남깁니다.
참조자는 “대상이 반드시 있다”는 신호이고, const 참조는 “읽기만 한다”는 신호입니다.