Parameter Contract

매개변수 형태는 함수가 원본을 어떻게 다룰지 말해준다

값, const 참조, 참조, 포인터는 성능 차이만이 아니라 함수의 의도를 드러내는 계약입니다. 선택 기준을 먼저 정하면 호출 코드가 더 읽기 쉬워집니다.

복사해서 독립 사용T value작은 값이거나 함수 내부 사본이 필요할 때.
읽기만 관찰const T&큰 객체를 복사하지 않고 안전하게 읽을 때.
원본을 반드시 수정T&null 확인 없이 호출자의 값을 바꿔야 할 때.
대상이 선택적T*없을 수도 있거나 다른 대상을 가리킬 수 있을 때.
질문
선택
의도
복사가 부담스러운가?
읽기라면 const T&
큰 객체를 새로 만들지 않습니다.
호출자 값을 바꿔야 하는가?
T&
수정이 함수의 목적임을 드러냅니다.
null이 의미 있는가?
T*
대상이 없을 수 있음을 호출부에 남깁니다.
참조자는 “대상이 반드시 있다”는 신호이고, const 참조는 “읽기만 한다”는 신호입니다.