overload resolution

호출 인자가 가장 잘 맞는 함수 선택

컴파일러는 함수 이름만 보지 않고 매개변수 개수, 타입, 변환 비용을 함께 비교합니다.

call site

add(3.5, 2.1)

두 인자가 모두 `double`인 호출입니다.

add(int, int)

변환 필요

double을 int로 줄여야 하므로 적합한 후보가 아닙니다.

add(double, double)

정확히 일치

인자 타입이 그대로 맞아 최종 선택됩니다.

add(int, int, int)

개수 불일치

필요한 인자가 세 개라 후보에서 제외됩니다.

모호성 신호 두 후보가 비슷한 변환 비용으로 맞으면 컴파일러는 임의로 고르지 않고 오류를 냅니다.