원문 : http://www.codeproject.com/KB/cpp/templates_part2.aspx
개요
이 초보자 가이드 첫번째 파트에서 우리는 함수와 클래스 템플릿을 사용해었다. 이번 파트에서는 나는 템플릿을 사용할때 조금더 유용한 요소를 보여 줄것이다.
오버로딩 함수 템플릿(Overloading function templates)
함수 템플릿은 다른 함수 템플릿 뿐만 아니라 일반적인 함수로 오버로딩 될 수 있다. 컴파일러는 가능한 함수 템플릿의 리스트를 만들고 적절한 템플릿 함수를 만드는 과정을 거칠것이다. 이 리스트는 일반적으로 가장 잘 맞는 오버로드 함수를 찾을 것이다.
Using friend and templates inside a template
Class templates like the one used in part 1 can include other templates or classes as well as having other classes as friends. (먼말인지.? ㅜㅜ)
클래스 템플릿이 또다른 클래스를 가질때에는 두가지 가능성이 있다.
- 두번째 내부 클래스는 일반적인 클래스로 할 수 있다. 그러므로 이 내부 클래스는 템플릿의 파라메터에 의존한다. 그렇지 않으면 이 내부 클래스는 다시 클래스 템플릿이다.
- 외부 클래스 템플릿은 자신의 템플릿 파라메터 뿐만 아니라 외부 클래스에 의존적인 또 다른 템플릿을 포함한다. 이 첫번째 예제에서 우리는 클래스 템플릿에서 처리되는 목록을 담았다
public:
class Node
{
friend Tree < ElemType >;
//...
};
};
여기에 내부 클래스 노드는 Tree 클래스에 의존적이며 따라서 그것을 파라메터로 갖는다. 외부 클래스는 그 파라메터 리스트와 함께 Node의 friend로 정의 되었다.
Template types
타입들을 사용할때에는 템플릿 파라메터의 범위 안에 선언하며 typename 단어를 사용해 선언해야 한다.
typename 키워드를 지정하지 않으면 컴파일러는 T::X를 변수 또는 상수로 간주하거나 에러를 리턴한다.
Element templates
When using element templates, it is possible e.g. to create a common class Builder that creates objects. 이 클래스는 사용자 메모리를 할당하기 위한 요소 함수를 제공한다. 이 요소 함수는 어떤 타입으로도 사용할 수 있는 템플릿 요소 함수로 구현되어 질 것이다.
This element function will be implemented as template element function and can be used for any types:
Note: Template element functions은 virtual로 선언할 수 없다.
Finally...
나는 내가 당신의 프로젝트를 개발하는 동안 시간을 단축하는 방법으로 템플릿 어떻게 사용하는지에 대한 쉬운 소개를 당신에게 주었다고 희망한다. 그리고 기억하라, 그것은 또한 많은 코드의 중복 및 타이핑 오류를 줄일 수 있다는것을!
License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
"C++, STL" 분류의 다른 글
| [번역] A Beginners guide to Templates - Part 1 (0) | 2009/03/10 |





::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::