관리 메뉴

JIE0025

[C++] 함수 오버로딩 본문

기타 학습/Language

[C++] 함수 오버로딩

Kangjieun11 2022. 5. 6. 18:10
728x90

 

함수 오버로딩? 

C언어에선 함수이름만으로 함수를 찾아서 동일한 이름의 함수를 선언할 수 없으나

C++에선 함수이름 + 인자의 형식,개수 에 따라 찾아서 동일한 이름의 함수를 선언할 수 있다. 이런 방식을 함수 오버로딩이라고 함.

 

 

예제 1 : swap 함수를 함수오버로딩을 사용해 정의하라.

#include<iostream>

using namespace std;

void swap(int* num1, int* num2) {
	int tmp = *num1;
	*num1 = *num2;
	*num2 = tmp;
}
void swap(char* ch1, char* ch2) {
	char tmp = *ch1;
	*ch1 = *ch2;
	*ch2 = tmp;
}
void swap(double* db1, double* db2) {
	double tmp = *db1;
	*db1 = *db2;
	*db2 = tmp;
}
int main() {
	int num1 = 20, num2 = 30;
	swap(&num1, &num2);
	cout << num1 << ' ' << num2 <<'\n';

	char ch1 = 'A', ch2 = 'Z';
	swap(&ch1, &ch2);
	cout << ch1 << ' ' << ch2 << '\n';

	double db1 = 3.33, db2 = 5.55;
	swap(&db1, &db2);
	cout << db1 << ' ' << db2 << '\n';

	return 0;
}

 

 

다음 예제를 보자 

반환형은 다르고 이름과 매개변수가 같다. 

int test(int num){
	return 0;
}

void test(int num){
	return 0;
}

 

주의 💥 이 경우엔 함수오버로딩 실패 !!! 반환형은 고려하지 않는다.