반응형
//C언어 함수 오버로딩의 이해
int MyFunc(int num)
{
num++;
return num;
}
int MyFunc(int a, int b)
{
return a+b;
}
int main(void)
{
MyFunc(20); //MyFunc(int num) 함수의 호출
MyFunc(30,40); //MyFunc(int a, int b) 함수의 호출
return 0;
}
"함수 호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능하기 때문에 매개변수의 선언 형태가 다르다면, 동일한 이름의 함수 정의를 할 수 있는 것이 함수 오버 로딩이라고 한다"
MyFunc(30, 40); //함수 호출 문
"두 개의 int형 정수를 인자로 전달 받을 수 있는 MyFunc라는 함수를 찾는다"
"매개변수의 자료형 또는 개수가 다르다"
int MyFunc(char c) { . . . . .}
int MyFunc(int n) {..... }
int MyFunc(int n1, int n2) {. . . . . }
FunctionOverloading.cpp
#include<iostream>
using namespace std;
void MyFunc(void)
{
cout<<"MyFunc(void) "<<endl;
}
void MyFunc(char c)
{
cout<<"MyFunc(char c)"<<endl;
}
void MyFunc(int a, int b)
{
cout<<"MyFunc(int a, int b)"<<endl;
}
int main(void)
{
MyFunc();
MyFunc('A');
MyFunc(12,13);
return 0;
}
실행결과
MyFunc(void)
MyFunc(char c)
MyFunc(int a, int b)
swapFunctionOverloading.cpp
#include<iostream>
using namespace std;
//swap함수를 오버로딩을 사용하여 구현
void swap(int * ptr1, int * ptr2)
{
int temp = *ptr1;
*ptr1 = *ptr2
*ptr2 = temp;
}
void swap(char * ptr1, char * ptr2)
{
int temp = *ptr1;
*ptr1 = *ptr2
*ptr2 = temp;
}
void swap(double * ptr1, double * ptr2)
{
int temp = *ptr1;
*ptr1 = *ptr2
*ptr2 = temp;
}
int main(void)
{
int num1 = 20, num2 = 30;
swap(&num1, &num2);
cout<<num1<<' '<<num2<<endl;
char ch1='A' , ch2='Z';
swap(&ch1, &ch2);
cout<<ch1<<' '<<ch2<<endl
double dbl1=1.111, dbl2=5.555;
swap(&dbl1, &dbl2);
cout<<dbl1<<' '<<dbl2<<endl;
return 0;
}
실행결과
30 20
Z A
5.555 1.111
'study > C++' 카테고리의 다른 글
malloc & free를 대체하는 new & delete (0) | 2020.05.20 |
---|---|
참조자(Reference) (0) | 2020.05.19 |
자료형 bool (0) | 2020.05.19 |
이름공간(namespace)에 대한 소개 (0) | 2020.05.19 |
매개변수의 디폴트 값(Default Value) (0) | 2020.05.19 |