[c++] 함수 오버로딩과 디폴트 매개변수의 관계

디폴트 매개변수는 함수에 매개변수를 전달하지 않았을 때 기본 값을 설정하는 기능입니다.

함수 오버로딩과 디폴트 매개변수는 서로 연관되어 있습니다. 함수 오버로딩을 사용하면 같은 이름을 갖는 여러 함수를 정의할 수 있고, 이때 디폴트 매개변수를 활용하여 함수 호출 시 일부 매개변수를 생략할 수 있습니다.

아래 예시를 통해 함수 오버로딩과 디폴트 매개변수를 함께 사용하는 방법을 확인해보겠습니다.

#include <iostream>
using namespace std;

// 디폴트 매개변수를 갖는 함수
void printNumber(int num, char end='\n') {
    cout << "Number: " << num << end;
}

// 위 함수와 동일한 이름을 갖는 오버로딩된 함수
void printNumber(double num, char end='\n') {
    cout << "Number: " << num << end;
}

int main() {
    printNumber(5); // 디폴트 매개변수를 사용하여 end 값을 지정하지 않음
    printNumber(3.14, ' '); // 오버로딩된 함수 호출
    return 0;
}

위 예시에서 printNumber 함수는 intdouble 타입에 대해 오버로딩되었으며, 둘 다 char 타입의 디폴트 매개변수를 가지고 있습니다. 이를 통해 함수 호출 시 디폴트 매개변수를 활용하여 일부 매개변수를 생략할 수 있음을 확인할 수 있습니다.

함수 오버로딩과 디폴트 매개변수는 각 함수마다 독립적으로 적용될 수 있지만, 함께 사용함으로써 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

이와 관련된 참고 자료: https://en.cppreference.com/w/cpp/language/default_arguments