템플릿의 일반 사용법
template <typename A, typename B>
class InstanceTemplate
{
public:
void Add(A a, B b) {
std::cout << a + b<<std::endl;
}
};템플릿 특수화 만약 내가 위처럼 A,B를 받는다고는 했지만 그중에서도 double이 하나 들어오면 특별하게 취급하고 싶을 때.
template <typename B>
class InstanceTemplate<double, B> {
public:
void Double(double a, B b) {
std::cout << a * b<<std::endl;
}
};마찬가지로 내가 정한 것만 들어왔으면 할 때
template <>
class InstanceTemplate<char, char> {
public:
void Double(char a, char b) {
std::cout << a <<b << std::endl;
}
};그래도 template<>을 써주긴 해야함.
함수 템플릿
template<typename B>
void coutAll(B _b) {
std::cout << _b << std::endl;
}static 키워드와 함수 템플릿
template<typename T>
T Fuc(T num){
static T sum = 0;
sum += 0;
return sum;
}이런 경우에는 static 변수 안에 매개변수의 자료형에 따라 따로 메모리를 할당할 수 있다. 그러니까 int sum과 float sum이 구분되어서 메모리에 할당된다는 이야기.