728x90
함수 오버로딩: 함수명이 같고 매개변수의 선언만 다를 경우 함수명이 같은 것을 허용함
int MyFunc(int num)
{
num++;
return num;
}
int MyFunc(int a, int b)
{
return a + b;
}
int main(void)
{
MyFunc(20);
MyFunc(30, 40);
return 0;
} => 가능
C++에서는 함수 호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분 가능
C에서 안되는 이유: "MyFunc어딨어 ~!!!!! MyFunc 낸하!(찡찡)"
C++에서 되는 이유: "두 개의 int형 정수를 인자로 전달받을 수 있는 MyFunc라는 이름의 함수를 찾아야겠군"
오버로딩 되는 조건
매개변수의 자료형, 매개변수의 개수가 다르면 가능
int MyFunc(char c){...}
int MyFunc(int i){...}
int MyFunc(int n1, int n2){...} //가능
오버로딩 안되는 조건
void MyFunc(int n){...} => 반환형이 다른 경우는 함수를 구분하는 기준이 될 수 없음.
내가 생각하는 오버로딩의 장점: 같은 일을 하는 함수가 받는 매개변수만 다를 때 굳이 함수명을 달리 할 필요가 없어서 코드가 깔끔해질 듯!
728x90
'LANG > C++' 카테고리의 다른 글
[C++]02-1.Chapter 02의 시작에 앞서 (0) | 2023.05.11 |
---|---|
[C++] 01-5.이름공간(namespace)에 대한 소개 (2) | 2023.05.11 |
[C++] 01-4.인라인(inline) 함수 (0) | 2023.05.11 |
[C++]01-3.매개변수의 디폴트 값 (0) | 2023.05.11 |
[C++] 01-1. printf와 scanf를 대신하는 입출력방식 (0) | 2023.05.09 |