반응형
같은 일을 하는 함수가 타입만 다를 경우, 함수 템플릿을 이용하여 편의성과 확장성을 얻을 수 있다.
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;
}
반응형
'개발 > C, C++' 카테고리의 다른 글
C++ - 생성자 초기화 리스트 (Constructor Member Initializer List) (0) | 2021.07.26 |
---|---|
C 언어에서 날짜 구하기 (2) | 2021.07.24 |
허상 포인터 (Dangling Pointer) (0) | 2021.07.18 |
구조체의 크기 (0) | 2021.06.19 |
C++ - 컨테이너와 반복자 (Container and Iterator) (0) | 2021.06.11 |
댓글