템플릿은 STL 제너릭 프로그래밍의 핵심이라고 할 수 있습니다.
템플릿은 컴파일 타임에 클라이언트가 여러 타입의 함수나 클래스를 쉽게 생성하게 하고, 서버 코드 작성자는 좀더 일반적인 프로그램 코드를 만들고 클라이언트가 구체적인 코드를 작성함으로써 제너릭한 프로그래밍이 가능하게 합니다.
템플릿에는 함수 템플릿과 클래스 템플릿이 있습니다.
템플릿의 강력한 기능을 설명하기 위해 간단한 예제를 살펴보겠습니다.
위 예제는 간단하게 정수를 출력하는 예제입니다. 만약 여기에 실수와 문자열을 출력하는 두 함수를 추가 하려고 한다면 함수 오버로딩을 이용하면 됩니다. 그러나 함수 오버로딩은 클라이언트가 매개변수 타입을 미리 알고 있다는 전제로 만들어집니다. 만일 클라이언트에서 사용자 정의 타입을 결정해야 한다면 함수 오버로딩으로 해결할 수 없습니다. 그러나 템플릿을 이용하면 이 문제를 간단하게 해결할 수 있습니다.
위의 정수 출력 예제를 템플릿을 사용하여 사음과 같이 변형할 수 있습니다.
매우 유용한 기능이내요 ㅎ
연습 예제로 swap() 함수를 템프릿 버전으로 만들어 보겠습니다.
다음은 클래스 템플릿에 대해 알아보도록 하겠습니다.
클래스 템플릿은 함수 템플릿과 별반 다르지 않습니다. 단지 함수에서 클래스로 바뀐 것뿐입니다.
예제를 통해 알아보도록 하겠습니다.
아래 소스는 장수 자료를 저장,관리하는 Array 클래스입니다.
이렇게 정의하게 되면 여러가지 타입의 Array클래스의 객체를 사용할수 있게 됩니다.
후~ 드디어 STL에 들어가기전 기본 문법에 대해서 알아보았내요.
다음시간에는 STL에 대해서 알아 보도록 하겠습니다.
연산자오버로딩, 함수포인터, 함수객체, 템플릿에 대하여 숙지하지 못하신분들은 꼭 다시 둘러보고 STL에 들어가도록 합시다!!
<작성자 - CODER_CJH>
<참고자료 - 뇌를 자극하는 C++STL>
'Programming Language > C++' 카테고리의 다른 글
8. vector 컨테이너(2) (0) | 2016.06.03 |
---|---|
7. vector 컨테이너(1) (0) | 2016.06.03 |
5.함수 객체 (0) | 2016.06.01 |
4. 함수 포인터 (1) | 2016.06.01 |
3. STL에 필요한 주요 연산자 오버로딩(2) (4) | 2016.06.01 |