Default Params

기본 매개변수 선언 계약

기본 인자는 호출 지점에서 보이는 선언의 값으로 대입됩니다. 헤더에 공개한 기본값은 API 의미와 재컴파일 경계까지 함께 바꿉니다.

호출부에 보이는 기본값

declaration contract

선언 위치

기본값은 보통 헤더의 함수 선언에 둡니다. 같은 범위에서 같은 인자에 기본값을 반복 지정하면 오류입니다.

우측 인자 생략

기본값 없는 매개변수 뒤에 기본값 있는 매개변수를 두며, 호출 시 중간 인자만 건너뛸 수 없습니다.

overload 충돌

f(int)와 f(int, int = 0)처럼 생략 후 같은 호출 모양이 되면 overload resolution이 모호해질 수 있습니다.

ABI/API 한계

기본값은 함수 타입이 아니며 호출부에 박힙니다. 공개 헤더 값을 바꾸면 사용자 재컴파일이 필요합니다.

declarevisible defaultomit tail argscall
기본 정책

기본 매개변수는 overload를 늘리지 않고 호출을 줄이는 도구입니다. 하지만 공개 API에서는 의미 변경, 모호 호출, 재컴파일 비용을 같이 봐야 합니다.