int main(void)
{
    MyFunc(20);
    MyFunc(30, 40);
    return 0;
}

함수호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능하기 때문에 매개변수의 선언형태가 다르다면, 동일한 이름의 함수정의를 허용할 수 있습니다. 이러한 형태의 함수정의를 가리켜 '함수 오버로딩(Function Overloading)'이라 합니다.


c++은 호출할 함수를 찾을 때, '함수의 이름', '매개변수의 선언', 이 두 가지 정보를 동시에 활용합니다.


즉, 다음의 함수 호출문을 보면,


My Function(30, 40);


다음과 같이 판단하고, 함수를 찾습니다.


"두 개의 int형 정수를 인자로 전달받을 수 있는 MyFunc라는 이름의 함수를 찾아야겠군!"


반면 c언어는 함수의 이름만 이용해서 호출대상을 찾는다. c언어에서는 함수의 오버로딩이 불가능하며, 이를 문법적으로 허용하지도 않습니다.


함수의 오버로딩이 가능하려면 다음 조건을 만족해야 합니다.


"매개변수의 자료형 또는 개수가 다르다."



출처

    • 열혈 C++ 프로그래밍


+ Recent posts