템플릿 (Template)

C++의 템플릿을 이용하면 함수나 클래스를 정의할 때 특정 데이터형을 사용하는 대신 범용형을 사용할 수 있습니다.

 - 정의된 함수 템플릿이나 클래스 템플릿은 여러가지 데이터형에 대해 함수 정의나 클래스 정의를 생성할 수 있습니다.


프로그램을 개발하다보면 같은 기능을 여러가지 데이터형에 대해서 구현해야 할 때가 있습니다.

 - 예 : Stack 클래스라면 정수 값을 넣을 수 있는 Stack을 구현했다고 가정했을 때, 실수형을 비롯한 다른 값을 넣을 수 없습니다. 따라서 각각 다른 형태의 Stack 클래스를 만들어야하는 불편함과 비효율이 있습니다.


바로 이런 경우에 해결책이 될 수 있는 것이 템플릿입니다.

 - 처리 알고리즘은 같고, 처리할 값의 데이터형이 다양할 때 템플릿을 이용하는 것이 좋습니다.



템플릿의 정의

template 키워드를 지정하고 < >안에 typename 키워드와 함께 범용형의 이름을 나열하면 됩니다.

클래스 템플릿을 정의하는 것도 함수 템플릿을 정의하는 것과 마찬가지입니다.

 - 클래스 정의에서 멤버 변수나 멤버 함수를 정의할 때 범용형을 사용하면 됩니다.




1행은 정수형 3과 4가 곱해져 12 : 3 * 4 = 12

2행은 정수형 3과 4.5가 곱해져 13.5 : 3 * 4.5 = 13.5


이처럼 변수의 형식 제한 없이 함수를 사용할 수 있습니다.



템플릿의 특징

1. 실제로 사용되기 전까지는 코드가 생성되지 않습니다.

2. 템플릿 기반 라이브러리의 가장 큰 장점으로 코드 크기를 최소화 한다는 점.

 - 크기나 확장성 면에서 우수합니다.

3. 함수의 정의나 멤버 함수의 정의를 소스 파일에 넣는 대신 헤더 파일에 넣는다는 점.

 - 템플릿의 멤버 함수는 함수가 실제로 호출될 때 함수의 정의를 컴파일러가 생성해야 합니다. 이를 위해 함수를 호출하기 위해서 포함하는 헤더 파일 안에 함수의 정의가 함께 포함되어 있어야만 함수의 정의를 생성할 수 있습니다.


템플릿을 이용하면 작고 빠르고 확장성있는 라이브러리를 구축할 수 있기 때문에 C++ 프로그램에서는 템플릿이 아주 유용하게 사용됩니다.

 - 가장 대표적으로 STL이 있습니다.

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

C++와 Java의 차이점  (0) 2014.10.13
C++ STL  (0) 2014.10.10
C 헤더파일 중복검사  (0) 2014.10.10
C++ 네임스페이스  (0) 2014.10.10
C++ 인라인 함수  (0) 2014.10.10
Posted by 긍정왕오킹