클래스 템플릿(Class Template)
Programming/C++ 2012. 10. 11. 00:37 |함수를 템플릿으로 정의했듯이 클래스도 템플릿으로 정의가 가능하다.
그리고 이렇게 정의된 템플릿을 가리켜 '클래스 템플릿(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 |