본문 바로가기
Language&Framework&Etc/C++

템플릿

by 머리올리자 2021. 1. 13.

템플릿에 대한 이해

  • 템플릿에는 '모형자'라는 뜻이 담겨 있음
  • 모형자 : 모형을 만들어낸다. 모형의 틀은 결정되어 있지만, 모형의 색은 결정되어 있지 않아서 결정해야 한다.
  • 함수 템플릿은 함수를 만들어 낸다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않아서 결정해야 한다.
  • 함수 템플릿도 다양한 자료형의 함수를 만들어 낼 수 있다.
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