함수를 템플릿으로 정의했듯이 클래스도 템플릿으로 정의가 가능하다. 

그리고 이렇게 정의된 템플릿을 가리켜 '클래스 템플릿(Class Template) 이라 하며, 이를 기반으로 컴파일러가 만들어 내는 클래스를 가리켜 '템플릿 클래스(Template Class)' 라 한다.


클래스 템플릿의 정의방법은 함수 템플릿의 정의방법가 동일하다.



23행: 정의된 템플릿을 기반으로 컴파일러가 만들어 내는 템플릿 클래스 Point<int> 의 객체 생성을 명령하고 있다. 여기서 <int> 는 T를 int로 하여 만든 템플릿 클래스를 의미한다.


컴파일러는 '클래스 템플릿' 을 기반으로 '템플릿 클래스' 를 만들어 낸다. 위 예제의 경우 총 3개의 템플릿 클래스가 만들어지며, 이들 각각은 다음과 같이 표현을 해서 일반 클래스와 구분을 짓는다.


Point<int> 템플릿 클래스

Point<double> 템플릿 클래스

Point<char> 템플릿 클래스


※ 템플릿 함수를 호출할 때와 마찬가지로 템플릿 클래스의 객체를 생성할 때에도 <int>, <double> 등등과 같은 자료형 정보를 생략할 수 있을까?

- 이 경우에는 생략이 불가능하다. 클래스 템플릿 기반의 객체생성에는 반드시 자료형 정보를 명시하도록 되어있다.

'Programming > C++' 카테고리의 다른 글

Template 2  (0) 2012.10.14
클래스 템플릿의 선언과 정의의 분리  (1) 2012.10.11
함수 템플릿의 특수화(Specialization)  (0) 2012.10.10
Template  (0) 2012.10.10
string 클래스의 디자인  (0) 2012.10.09
Posted by scii
: