study/C++

함수 오버로딩(Function Overloading)

IT공부 2020. 5. 19. 19:13
반응형
//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