본문 바로가기
c++

[C++]함수의 오버로딩

by goblin- 2023. 1. 21.
함수의오버로딩

함수호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능하기 때문에 매개변수의 선언형태가 다르다면, 동일한 이름의 함수정의를 허용할 수 있다.

 

함수의 오버로딩을 설명하는 예제
#include <iostream>

void MyFunc(void)
{
    std::cout<<"MyFunc(void) called"<<std::endl;
}

void MyFunc(char c)
{
    std::cout<<"MyFunc(char c) called"<<std::endl;
}

void MyFunc(int a, int b)
{
    std::cout<<"MyFunc(int a, int b) called"<<std::endl;
}

int main(void){
    MyFunc();
    MyFunc('A');
    MyFunc(12,13);
    return 0;
}
결과
MyFunc(void) called
MyFunc(char c) called
MyFunc(int a, int b) called

위의 코드에 따르면 메인함수에서 똑같은 MyFunc 함수가 3개가 있지만 선언한 매개변수의 형태가 다르기 때문에 각각 구분하여  호출 시킨 것을 확인할 수 있다.

 

다음과 같은 경우 처럼 인자의 개수를 통하여도 호출할 함수의 구분이 가능하다.

int Myfunc(int n) {...}
int Myfunc(int n1, int n2) {...}
함수의 오버로딩이 가능하려면 "매개변수의 자료형 또는 개수가 달라야 한다."