728x90
클래스 템플릿
- typedef를 사용하여 클래스에 접근하면 데이터형을 변경할 때마다 헤더 파일을 수정해야 하고, typedef로는 동시에 두가지 데이터형을 나타낼 수 없으므로 템플릿을 사용하여 접근하는 것이 좋다.
- 템플릿은 매개변수화되는 데이터형을 제공하여, 클래스나 함수에 데이터형 이름을 매개변수로 넘겨줄 수 있다.
- template <class Type>
- 키워드 template은 컴파일러에게 템플릿을 정의하고 있다는 것을 알린다.
데이터형 매개변수
- 템플릿에서 사용되는 Type 과 같은 포괄적인 데이터형 식별자를 데이터형 매개변수라고 한다.
- 데이터형 매개변수는 변수와 같은 역할을 하지만, 거기에는 수치(numeric value)를 대입하지 않고 데이터형을 대입한다.
접근방식
- 생성자 접근 방식은 new와 delete에 의해 관리되는 힙(heap) 메모리를 사용하는 반면에, 수식 매개변수 접근 방식은 자동 변수들을 관리하는 스택 메모리를 사용한다.
- 스택 메모리는 작은 배열들을 많이 사용하는 경우에, 더 빠른 실행 속도를 제공한다.
템플릿 특수화
- 클래스 템플릿은 특수화(암시적 구체화, 명시적 구체화, 명시적 특수화)를 사용할 수 있다는 점에서 함수 템플릿과 비슷하다.
- 즉, 템플릿은 클래스를 포괄형으로 서술하는 반면에, 특수화는 구체적인 하나의 데이터형을 사용하여 생성한 클래스 선언이다.
부분적인 특수화
- 부분적인 특수화는 템플릿의 포괄성 일부를 제한하여, 데이터형 매개변수들 중 어느 하나에 구체적인 데이터형을 제공하는 등의 기능이다.
728x90