템플릿에 대한 이해
- 템플릿에는 '모형자'라는 뜻이 담겨 있음
- 모형자 : 모형을 만들어낸다. 모형의 틀은 결정되어 있지만, 모형의 색은 결정되어 있지 않아서 결정해야 한다.
- 함수 템플릿은 함수를 만들어 낸다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않아서 결정해야 한다.
- 함수 템플릿도 다양한 자료형의 함수를 만들어 낼 수 있다.
int Add(int num1, int num2)
{
return num1+num2
}
- 함수의 기능 : 덧셈
- 대상 자료형 : int형 데이터
함수 템플릿
T Add(T num1, T num2)
{
return num1+num2
}
- 함수의 기능 : 덧셈
- 대상 자료형 : 결정되어 있지 않음
T는 자료형을 결정짓지 않겠다는 의미로 사용.
완성형
template <typename T>
T Add(T num1, T num2)
{
return num1+num2
}
template <typename T>
T라는 이름을 이용해서 아래의 함수를 템플릿으로 정의한다는 의미.
template <typename T>
template <class T>
예제
#include <iostream>
using namespace std;
template <typename T>
T Add(T num1, T num2)
{
return num1 + num2;
}
int main(void)
{
cout << Add<int>(15, 20) << endl;
cout << Add<double>(2.9, 3.7) << endl;
cout << Add<int>(3.2, 3.2) << endl;
cout << Add<double>(3.14, 2.75) << endl;
return 0;
}
Add<int>(15, 20)
T를 int로 해서 만들어진 Add 함수를 호출한다.
한 번 함수가 만들어지면, 그 다음에는 만들어진 함수를 호출할 뿐 새로 함수를 만들지는 않는다.
컴파일 할 때 함수가 만들어진다.
따라서 main의 첫 두 문장 때 함수가 생성되고, 아래 두 문장 때 불러온 함수를 그냥 호출한다.
아래는 함수 템플릿
template <typename T>
T Add(T num1, T num2)
{
return num1 + num2;
}
아래는 템플릿을 기반으로 컴파일러가 만들어 내는 템플릿 함수(일반함수가 아님)
int Add<int>(int num1, int num2)
{
return num1 + num2;
}
double Add<double>(double num1, double num2)
{
return num1 + num2;
}
참고 : [윤성우 열혈 C++ 프로그래밍] - 대부분의 내용 및 코드는 이 책에서 개인 공부 정리 목적으로 참고하였습니다.
'Language&Framework&Etc > C++' 카테고리의 다른 글
Malloc 정리 (0) | 2021.04.09 |
---|---|
C++ Vector란 (0) | 2021.01.20 |
가상함수 (0) | 2021.01.12 |
C++ 상속 예제 (0) | 2021.01.10 |
클래스의 완성(04-4) 클래스와 배열 그리고 this 포인터 (0) | 2021.01.10 |