while (1): study();

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

학습/C, C++

[C++]함수 오버로딩

전국민실업화 2021. 12. 17. 23:34
728x90

 함수 오버로딩이란 이름과 기능이 같은 함수를 인자에 따라 다르게 작동하도록 구현하는 것을 말한다. 기존 C언어에서는 함수의 이름으로 함수를 호출하기 때문에 함수 오버로딩이 불가능했으나, C++에서는 함수의 이름에 더해 매개변수의 수, 타입까지 감안하여 서칭하기 때문에 오버로딩이 가능하다. 여담으로 파이썬에서는 오버로딩은 안되지만 디스패치 함수를 구현할 수는 있다.

 다음은 swap 함수를 다양한 자료형에 호환되도록 구현한 함수 오버로딩의 예시이다.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>


void swap(int*, int*);
void swap(char*, char*);
void swap(double*, double*);

int main(void)
{
	int num1 = 20, num2 = 30;
	swap(&num1, &num2);
	std::cout << num1 << ' ' << num2 << std::endl;

	char ch1 = 'A', ch2 = 'Z';
	swap(&ch1, &ch2);
	std::cout << ch1 << ' ' << ch2 << std::endl;

	double db1 = 1.111, db2 = 5.555;
	swap(&db1, &db2);
	std::cout << db1 << ' ' << db2 << std::endl;

	return 0;
}

void swap(int* a, int* b)
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

void swap(char* a, char* b)
{
	char tmp = *a;
	*a = *b;
	*b = tmp;
}

void swap(double* a, double* b)
{
	double tmp = *a;
	*a = *b;
	*b = tmp;
}
728x90

'학습 > C, C++' 카테고리의 다른 글

구조체에 대한 new & delete 연산  (0) 2021.12.19
[C++] call-by-address와 call-by-reference  (0) 2021.12.18
사칙연산 계산기  (0) 2021.12.16
[C언어] 전처리 지시자  (0) 2021.12.16
단어 검출 프로그램  (0) 2021.12.16
Comments