템플릿은 헤더에 모든 코드가 들어있어야한다.
즉, 일반적인 파일분할처럼 .h와 .cpp로 정의와 구현이 구분되어 있으면 안된다는것.
그 이유는 컴파일시 inline함수처럼 코드복사가 일어나기 때문이다.
템플릿 코드를 컴파일해서 오브젝트 파일을 메모장으로 열어보면, 실제로는 TestClass<INT> 또는 TestFunc<FLOAT> 과 같은 이름으로 사용되고 있음을 볼 수 있다.
템플릿 함수 특수화 예시 코드
template <typename T>
void TestFunc(T& a)
{
.....
}
template <>
void TestFunc(int& a)
{
..... //// int 형에 대해서만 특수하게 적용할 코드를 작성한다.
}
댓글 없음:
댓글 쓰기