[C++, 템플릿] 템플릿의 부분 특화
C++ 2008. 5. 5. 01:38 |template< class T1, class T2 >
class Test
{
};
이런 클래스가 있다고 합시다.
우리는 이 클래스가 두개의 템플릿 인자를 받아 들인다는 걸 알고 있습니다.
Test< Ca, Cb > A;
A a;
이런 식이 되는 거죠.
그렇다면 저희가 작업 할때 Test 라는 템플릿 클래스를 놓고 특정 타입에 대해서
특화 되게 구현하고 싶은 경우가 있을거예요.
template< class T1, class T2 >
class Test {};
template <>
class Test< CT, CU > {};
이렇게 두개의 같은 클래스이지만 하나는 CT, CU의 명시적으로 특화된 클래스가 또 하나 존재를 하게 되면 만약 코딩을 통해서 CT, CU가 들어 오게 되면 아래의 클래스가 동작 되게 되는거죠.
바로 이게 부분 특화 입니다.
이때 부분적으로 특화를 하고 싶다면 아래와 같은 클래스를 하나 추가 하면 되요
template < class T1 >
class Test< T1, CU > {};
앞의 T1은 모든 객체를 다 받아 들이고 뒤의 CU는 명시적으로 선언을 해놨어요.
이게 바로 부분 특화라는 거죠 ^^
하나더 해볼까요?.
Button 이라는 클래스가 있다고 합시다. 모든 Button과 CU에 대해서 특화 시키고자 한다면...
template < class T1 >
class Test< Button<T1>, CU > {};
이렇게 하면 되죠 ^^
템플릿의 장점은 참 많네요..
ps. 지적 및 조언 및 질문 해주시면 고맙겠습니다.