본문 바로가기
개발/C, C++

C++ - 함수 템플릿 (Function Template)

by 피로물든딸기 2021. 7. 22.
반응형

C, C++ 전체 링크

 

같은 일을 하는 함수가 타입만 다를 경우, 함수 템플릿을 이용하여 편의성과 확장성을 얻을 수 있다.

 

template <typename T> 를 선언하면 일반 함수와 만드는 것과 같다. 

여기서 cout을 이용하면, return type에 상관없이 같은 방식으로 다른 타입을 출력할 수 있다.

 

아래와 같이 모든 type에 대해 덧셈을 return하는 함수가 있다고 하자.

template <typename T>
T add(T a, T b)
{
	return a + b;
}

 

그러면 cout을 이용해 아래와 같이 출력하면 된다.

cout << add(a, b) << endl;

 

만약 a, b가 int형이라면 add(a, b)는 add<int>(int a, int b)로 확정된다.

여기서 <int>는 <typename T>와 짝을 이룬다.

거꾸로 <int>로 type을 확정짓고 add를 호출하면,

add<int>(int a, int b)가 되기 때문에 아래의 코드는 30을 리턴한다.

cout << add<int>(10.1, 20.2) << endl;

 

여러 방식으로 출력해보자.

#include <stdio.h>
#include <iostream>

using namespace std;

template <typename T>
T add(T a, T b)
{
	return a + b;
}

int main(void)
{
	cout << add(10, 20) << endl;
	cout << add(10.1, 20.2) << endl;
	cout << add<int>(10, 20) << endl;
	cout << add<int>(10.1, 20.2) << endl;

	return 0;
}

반응형

댓글