Template Programming
Template 이란?
자료형에 의존하지 않고 코드를 재사용 할 수 있게 하는 기능을 말한다.
같은 기능을 하는 함수를 여러 자료형에 대해 따로 만들지 않고 하나의 코드로 처리할 수 있게 해준다.
기존 두 값을 비교할 때
int main()
{
int A = 3;
int B = 5;
int ABMAX = (A, B);
double C = 3.00;
double D = 4.00;
double CDMAX = (C, D);
std::cout << ABMAX << std::endl;
std::cout << CDMAX << std::endl;
}
각 타입별 자료형으로 만들어서 사용해 줫다.
함수 템플릿
template <typename T>
T 함수명(T 매개변수명, T 매개변수명)
{
return 매개변수명 > 매개변수명 ? 매개변수명 : 매개변수명;
}
예시
#include <iostream>
template <typename T>
T Max(T A, T B)
{
return A > B ? A : B;
}
int main(void)
{
std::cout << Max(20, 10) << std::endl;
std::cout << Max(3.14, 5.15) << std::endl;
}
출력

T 는 자료형을 대신하는 타입 변수이다.
클래스 템플릿 (Class Template)
클래스 또한 템플릿으로 만들 수 있다.
예시 )
// Main.cpp
#include <iostream>
#include <string>
template<typename T>
class Stat
{
private:
T value;
public:
Stat(T val) : value(val) {}
T getValue() const { return value; }
void setValue(T val) { value = val; }
};
class Player
{
public:
Stat<std::string> Name;
Stat<int> HP;
Stat<double> ATK;
Player() : Name("인간"), HP(100), ATK(12.5) {}
};
int main(void)
{
Player player;
std::cout << "Name: " << player.Name.getValue() << std::endl;
std::cout << "HP: " << player.HP.getValue() << std::endl;
std::cout << "ATK: " << player.ATK.getValue() << std::endl;
}
출력

Template 사용하는 이유
- 코드 재사용성 증가
같은 로직을 여러 자료형에서 사용할 수 있다
- 유지보수 편리
코드를 수정할 때 한 곳만 수정하면 된다.
- STL이 Template 기반
C++ 표준 라이브러리는 대부분 Template으로 만들어져 있다.
typename , class
템플릿에서는 두 가지를 사용할 수 있다.
template <typename T>
혹은
template <class T>
기능적으로 동일하다.
핵심 정리
Template Programming은
- 자료형에 독립적인 코드를 작성한다.
- 코드 재사용에 편하다
- 중복 코드가 감소한다.
< vector, map, set, algorithm > 전부 Template 기반이다.
마무리
언젠가 실무에 가게되면 가장 많이 사용하게 되는게 Template 라고 하니 개념을 이해하고 넘어가는게 아닌 완전히 익숙하게
상황에 맞게 적절하게 사용할 수 있게 될때까지 깜지행이다
'학습일지 > C와 C++' 카테고리의 다른 글
| Moderen C++ (1) | 2026.03.15 |
|---|---|
| C++ Vector (0) | 2026.03.14 |
| C++ std::string (0) | 2026.03.13 |
| C/C++ 상속과 다형성, 추상 클래스 (0) | 2026.03.12 |
| C++ RPG 전투 시스템 구현 과제 (0) | 2026.03.11 |