오버로딩 함수 이름을 재사용한다. input 부분인 매개변수가 달라야 재사용 할 수 있다. output 부분인 함수의 타입만 바꾸면 재사용 할 수 없다. int Add(int a, int b) { return a + b; } float Add(float a, float b) { return a + b; } int main() { int result = Add(1, 2); float result2 = Add(1.5f, 2.1f); } 스택 오버플로우 int Factorial(int n) { if (n