본문 바로가기

개인공부/C++

[C++] 함수 오버로딩

C에서는 동일한 이름의 함수가 여러번 정의되는 것을 허용하지 않는다. 

(자바는 함수 오버로딩이 있음)

 

int MyFunc(int num)
    num++;
    return num;
}

int MyFunc(int a, int b)
{
    return a+b;
}

 

두 함수는 이름이 같지만 매개 변수의 수가 다르다

MyFunc(1) 과 MyFunc(2,3)

충분히 컴퓨터가 구분할 수 있을 것 같고, 구분 한다.

 

int MyFunc(int num)
    num++;
    return num;
}

void MyFunc(int num)
    std::cout<<"숫자는 "<<num<<std::endl;
}

위 두 함수는 각각 문제가 없다

그럼 MyFunc(1)를 입력한다면 컴퓨터는 뭘 해야할까?

그냥 오류가 나온다

 

void MyFunc(int num)
    std::cout<<"숫자는 "<<num<<std::endl;
}

void MyFunc(char c)
    std::cout<<"문자는 "<<c<<std::endl;
}

이런 경우는 어떨까?

아하 MyFunc()에 숫자가 오면, 위의 함수를

문자가 오면, 아래 함수를 이용하면 되는구나!

 

그렇다 C++은 알잘딱이 아주 잘 되는 친구이다

 

정리하면

1. 매개변수의 수가 다를 경우

2. 매개변수의 타입이 다를 경우

동일한 이름의 함수를 여러개 만드는

'함수 오버로딩'이 가능하다

'개인공부 > C++' 카테고리의 다른 글

[C++] 매개변수의 기본값  (0) 2023.08.09
[C++] 입출력 방식  (0) 2023.08.08