template<typename T>
T get_max(T a, T b){
return a > b ? a : b;
}
데이터 타입을 변수처럼 표시해서 다양한 데이터 타입에서 사용가능하게 함.
만약 char인 경우만 다르게 표현하고 싶다면!
template<>
char get_max(char a, char b){
return a;
}
template<typename T1, typename T2>
T1 printsum(T1 a, T2 b){
return a + b;
}
template<typename 타입이름>
class classname
{
...
}
template<typename T>
class Box{
...
};
int main(){
Box<int> a;
Box<float> b;
Box<string> c;
}
클래스 외부에 템플릿 멤버 함수를 정의하는 경우
클래스 템플릿의 매개 변수에도 디폴트 값을 부여할 수 있다.
template<typename T = int>
ex) Box<> box;
템플릿 사용의 장점
클래스를 생성하기 전까지 코드가 생성되지 않는다.(코드의 크기를 증가시키지 않는다)
정적 멤버는 클래스 템플릿으로 생성된 모든 클래스에 대하여 각각 하나씩 생성된다.