Parameter Choice

참조는 반드시 있는 대상, 포인터는 없을 수도 있는 대상을 표현한다

포인터와 참조는 둘 다 원본을 다룰 수 있지만 API가 보내는 신호가 다릅니다. null 허용 여부와 수정 가능성을 먼저 정하면 타입 선택이 분명해집니다.

수정 참조

T&대상이 반드시 있고 원본을 바꿉니다.

읽기 참조

const T&큰 객체를 복사하지 않고 읽기만 합니다.

선택 포인터

T*null이 의미 있거나 대상을 바꿀 수 있습니다.

읽기 포인터

const T*없을 수도 있는 읽기 대상을 표현합니다.
질문
참조가 맞는 경우
포인터가 맞는 경우
대상이 항상 있는가?
있어야 한다면 T& 또는 const T&
없을 수 있다면 T* 또는 const T*
원본을 바꾸는가?
반드시 바꾸면 T&
대상이 선택적이면 T*에 null 확인을 둡니다.
읽기만 하는가?
큰 객체는 const T&
선택 입력은 const T*
항상 존재하면 참조가 단순하고, 없음 상태를 표현해야 하면 포인터가 더 정직합니다.