중요한것은 특수화가 되는 두번째 클래스나 세번째 클래스에서의 class a 옆에 오는 < , > 이 자리에 typename T1, 또는 T2 가 오는 위치이며 특수화시
template<typename T1> 나 template<typename T2> 또는 template<typename T3> 으로 해도 상관은 없다
(단! T3으로 했을때 틈수화 템플릿 내부에서도 T3으로 맞춰야한다 )
template<typename T1, typename T2>
class a{
public :
a(){
_t1=T1();
_t2=T2();
std::cout<<_t1<<"\t"<<_t2<<std::endl;
}
T1 _t1;
T2 _t2;
};
template<typename T1>
class a <T1,int>
{
public :
a(){
_t1=T1();
_t2=300;
std::cout<<_t1<<"\t"<<_t2<<std::endl;
}
T1 _t1;
int _t2;
};
template<typename T3>
class a <char,T3>
{
public :
a(){
_t1='t';
_t2=T3();
std::cout<<_t1<<"\t"<<_t2<<std::endl;
}
char _t1;
T3 _t2;
};
int main()
{
a<int,float> ai1;
a<int,int> ai2;
a<char,float> ai3;
//a<char,int> ai4; //error : T1 과 T2 자리에 대한 특수화가 모두다 있음으로
return 0;
}
반응형
'STLTemplate > Template' 카테고리의 다른 글
template class 내부함수 외부선언 (0) | 2016.04.23 |
---|---|
템플릿클래스의 부모클래스를 일반클래스로 (0) | 2013.03.08 |
템플릿 실제 사용 : 템플릿과 인라인을 쓰는것이 좋다 (0) | 2012.11.18 |
템플릿과 static (0) | 2012.11.17 |
클래스 템플릿 상속 (0) | 2012.10.31 |