-
Template 사용C++ 2014. 1. 16. 01:54
- Template는 다양한 인자 타입에 적용할 수 있는 알고리즘을 만들때 사용한다.
Function Template의 예
Template <typename T>
int sizeof(T a) {
return sizeof(a);
}
그러나 실제로 이런 Function Template를 만들어 사용하기 보다는 STL에서 정의된 Template를 사용하라.
- Function Template에서 특정 타입에 대해서 별도 구현이 필요한 경우에 특화된 Template Function을 정의한다. à Template Function Specializtion
Template <>
int sizeof(char* a) {
return strlen(a);
}
- 템플릿의 특수화 버전은 반드시 일반화 버전을 미리 앞에서선언해 두어야 한다.
- 템플릿 특수화 버전은 그것이 사용되는 지점 앞에 선언해 둘 것.
- 실제로 Template를 사용할 필요는 객체의 container가 될 Class를 정의할 때이다.
- 컨테이너에 대한 알고리즘을 구현하는 함수는 동일 계열의 컨테이너군에 모두 적용할 수 있는
알고리즘을 구현하는 템플릿 함수로 만든다.- 어떤 클래스, 템플릿이 서로 논리적으로 가까운 관계를 가지고 있으면 이런 것들은 공통의
네임스페이스에 넣는다
4. 포인터를 담는 컨테이너를 구현할 때 코드 크기를 최소화하려면 특수화 버전을 제공할 것.
5. 템플릿이 인스턴스화되는 지점의 주변 환경에 대한 템플릿 정의의 의존도를 최소화하자.
6. 선언한 특수화 버전은 반드시 정의하자.
7. C스타일 문자열 및 배열에 대한 템플릿 특수화가 필요한지 생각할 것.
8. 타입은 다르지만 개념이 동일한 구현코드를 하나의 인터페이스를 통해 제공하려면 템플릿 특수화와 오버로딩을 사용하자.
9. template <typename T> or <class T> 는 같은 Notation이나 구분해서 사용하자.
Typename을 정의할 때는 class를 사용하고
변수로 사용을 할 때는 typename을 사용하자.
'C++' 카테고리의 다른 글
Cast 연산자 (0) 2014.01.22 RTTI : Run-time type information 사용예 (0) 2014.01.18 Friend의 사용시기 (0) 2014.01.14 Overloading과 Overriding의 차이 (0) 2014.01.14 가상함수, 추상클래스의 권고 사항 (0) 2014.01.14