함수 다중 정의는 동일한 이름의 함수 하나로 매개 변수만 다르게 해서 함수를 정의하는 방법이다.
함수 다중 정의 사용 예시
#include <iostream>
int Add(int x, int y)
{
return x + y;
}
double Add(double x, double y)
{
return x + y;
}
int main()
{
// 매개변수로 들어가는 자료형에 따라 호출되는 함수가 달라진다.
std::cout << Add(5, 6) << std::endl;
std::cout << Add(3.14, 2.71) << std::endl;
return 0;
}
단점
동일한 이름으로 여러가지 매개변수를 받기 때문에 코드가 더 복잡해지고 이해하기 어려워질 수 있다.
참고사항


C는 안되지만 C++에서 오버로딩이 가능한 이유


이때 위와 같이 똑같은 Add함수 이름을 쓰지만 링크에러에서 나오는 (?Add@@YAHHH@Z)와 같이 실제로는
컴파일러 내부에서 Name Mangling이 진행된다.
Name Mangling은 링커가 고유하게 식별할 수 있도록 컴파일된 코드에서 함수 또는 변수 이름을 수정하는 프로세스이다.
이를 통해 함수의 이름이 같더라도 C++에서 함수 오버로딩이 가능하게 만든다.

'C, C++' 카테고리의 다른 글
| 27. 클래스 생성자와 소멸자 (0) | 2023.06.18 |
|---|---|
| 26. 클래스 (0) | 2023.06.17 |
| 24. 범위기반 for문 (0) | 2023.06.15 |
| 23. 참조자 (0) | 2023.06.14 |
| 22. c++ 메모리 동적할당 (0) | 2023.06.13 |