Checklist

수정 가능한 것과 없을 수 있는 것을 먼저 나누면 타입이 정해진다

const 포인터 선언과 참조 선택은 모두 같은 질문으로 정리할 수 있습니다. 값이 바뀌는가, 주소가 바뀌는가, 대상이 없을 수 있는가를 순서대로 확인합니다.

값을 읽기만 한다const T&대상이 항상 있으면 읽기 참조를 먼저 고려합니다.
값을 반드시 바꾼다T&null 없이 호출자의 원본을 수정합니다.
없을 수도 있다T*null을 의미 있는 상태로 표현합니다.
주소를 고정한다T* const포인터 변수가 다른 대상으로 바뀌지 못하게 합니다.
값 보호대상 앞의 const는 가리키는 값을 읽기 전용으로 만듭니다.
주소 보호변수 이름 쪽 const는 포인터 자체의 재지정을 막습니다.
없음 표현null 가능성이 API 의미라면 참조보다 포인터가 더 명확합니다.
읽기 전용은 const, 반드시 존재하면 참조, 없을 수 있으면 포인터로 의도를 드러냅니다.