본문 바로가기
c++ 기초

18) 함수 템플릿

by BitsrimAcrux 2025. 1. 1.

데이터형에 상관없이 적용가능한 함수

#include <iostream>

using namespace std;

template <class Any> // typename Any도 가능, Any는 임의로 정한 이름
Any sum(Any, Any);

int main() {
	int a = 3;
	int b = 4;
	cout << sum(a, b) << endl;

	float c = 2.1;
	float d = 2.3;
	cout << sum(c, d) << endl;

	// cout << sum(a, c) << endl; // a 기준 Any는 int로 인식되어 c는 float이므로 오류남

	return 0;
}

template <class Any>
Any sum(Any a, Any b) {
	return a + b;
}

위의 오류 수정

#include <iostream>

using namespace std;

template <class Any> // typename Any도 가능, Any는 임의로 정한 이름
Any sum(int, Any);

int main() {
	int a = 3;
	float c = 2.1;

	cout << sum(a, c) << endl;

	return 0;
}

template <class Any>
Any sum(int a, Any b) {
	return a + b;
}

오버로딩 추가

#include <iostream>

using namespace std;

template <class Any> // 오버로딩
Any sum(Any, Any);
template <class Any>
Any sum(int, Any);

int main() {
	int a = 3;
	int b = 4;
	//cout << sum(a, b) << endl; // 첫 번째 함수와 두 번째 함수 모두에 해당되어 사용 불가

	float c = 2.1;
	float d = 2.3;
	cout << sum(c, d) << endl;

	cout << sum(a, c) << endl;

	return 0;
}

template <class Any>
Any sum(Any a, Any b) {
	return a + b;
}

template <class Any>
Any sum(int a, Any b) {
	return a + b;
}
728x90

'c++ 기초' 카테고리의 다른 글

20) 클래스  (0) 2025.01.03
19) 분할 컴파일  (0) 2025.01.02
17) 함수 오버로딩  (0) 2025.01.01
16) 참조, 포인터, 값에 의한 호출  (0) 2025.01.01
15) 인라인 함수  (0) 2024.12.31