overload resolution

컴파일러는 호출 인자를 보고 가장 잘 맞는 후보를 고른다

같은 이름의 함수가 여러 개 있어도, 인자의 타입과 개수가 다르면 호출 대상이 자연스럽게 좁혀집니다.

add(5, 7)
int add(int, int)
정수 두 개가 정확히 일치합니다.
add(3.5, 2.1)
double add(double, double)
실수 두 개가 double 후보와 맞습니다.
add(1, 2, 3)
int add(int, int, int)
인자 개수가 세 개인 후보만 남습니다.
add("Hello", "World")
string add(string, string)
문자열 결합 후보가 선택됩니다.
1. 이름 일치add라는 후보들을 모읍니다.
2. 인자 비교개수와 타입으로 호출 가능한 후보만 남깁니다.
3. 최적 선택정확히 맞는 후보가 있으면 그 함수로 연결합니다.