[c++] 함수 오버로딩과 이름 맹소화

함수 오버로딩은 C++에서 동일한 이름을 가진 함수를 여러 개 정의하는 것을 말합니다. 이러한 기능을 통해 하나의 함수명으로 여러 가지 입력 타입을 다룰 수 있습니다.

함수 오버로딩의 장점

함수 오버로딩을 사용하면 코드의 가독성이 향상됩니다. 예를 들어, calculateArea(int radius)calculateArea(int length, int width) 두 함수를 각각 작성하는 것보다, 단순히 calculateArea라는 이름의 함수를 각각 다르게 정의하는 것이 코드를 이해하고 유지보수하기 쉽게 만들어 줍니다.

함수 오버로딩의 예제

다음은 함수 오버로딩의 간단한 예제입니다.

#include <iostream>
using namespace std;

// 정수형 인자를 받는 함수 오버로딩 예제
void print(int i) {
    cout << "정수값: " << i << endl;
}

// 실수형 인자를 받는 함수 오버로딩 예제
void print(double f) {
    cout << "실수값: " << f << endl;
}

int main() {
    print(5);      // 정수값: 5
    print(500.263); // 실수값: 500.263
    return 0;
}

위 예제에서 print라는 함수명을 가진 함수가 두 번 정의되어 있습니다. 첫 번째 함수는 정수를, 두 번째 함수는 실수를 출력하도록 정의되어 있습니다.

함수 오버로딩과 이름 맹소화

함수 오버로딩은 이름 맹소화(name mangling)라는 프로세스를 통해 이루어집니다. 이름 맹소화란 같은 이름을 가진 함수들을 구분하기 위해 컴파일러가 각 함수의 시그니처(파라미터 타입과 순서)를 바탕으로 각 함수에 대한 유일한 이름을 생성하는 과정을 말합니다. 따라서 C++ 컴파일러는 함수 오버로딩을 가능하게 하기 위해 각 함수를 식별하기 위한 독특한 이름을 만들어 냅니다.

이러한 이름 맹소화로 인해 동일한 이름을 가진 함수들도 컴파일러가 각각의 함수를 식별할 수 있게 되며, 이를 통해 함수 오버로딩을 구현할 수 있게 됩니다.

함수 오버로딩은 C++의 강력한 기능 중 하나로, 코드의 가독성을 향상시키고 유지보수를 용이하게 해 줍니다.

참고문헌: