[번역] A Beginners guide to Templates - Part 1

[C++, STL]
템플릿에 관련된 내용이 좋은게 많은데 Code Project에 있는 내용을 한번 해석해 봤어요(요즘 다시 영어 공부를 시작한 터라 어느정도인지 확인도 하고 싶고. ㅜㅜ)
제목에는 번역이라고 적었는데 솔직히 한글로 적어 놓으니까 무슨말인지 더 이해가 안되는
죄송합니다. ㅜㅜ
원문 : http://www.codeproject.com/KB/cpp/templates_part1.aspx


개요

 템플릿(Templates)은 상이한 함수들 및 클래스들을 위해 공유되는 코드들이 사용되어지는 대규모 어플리케이션을 개발할때 많은 시간을 단축시켜 준다. 명확한 템플릿은 데이터타입으로 부터 독립성이 강한 함수 혹은 클래스가 일반적이다. 이번 초보자 튜토리얼(beginner tutorial)에서는 템플릿 함수 및 템플릿 클래스에 대해서 다루고 있다. 당신은 스택 및 그 스택에 pushing, popping, reading status 등의 모든 작업 구현해야 한다고 상상해 보라. 이 스택 클래스는 double 값을 사용 할 수 있도록 구현을 했는데 나중에 같은 프로그램에서 ints, CStrings 무엇이든지 사용하는 스택이 필요하다면? 템플릿 매커니즘이 없이는 당신은 각각의 스택 클래스를 복사 및 붙여넣기를 해야 했을 것이다. 그것은 매우 효과적이지 못하다.
But with templates you just define the template function or class with all it's own functions and variables,
 and declare a new variable that gets all the stuff from the template definition. (아 이부분 해석을 못하겠어요 ㅠㅠ)
그래서 이러한 작업이 어떻게 되는지 보면.

함수 템플릿(Function templates)

우리는 서로 다른 타입을 가질 수 있는 한 배열(array)로 부터 특정 최소값을 찾기 위한 함수 템플릿이 필요하다고 상상해 봅시다.

이것은 템플릿의 정의 부분이다. 그 템플릿은 함수안의 찾기 및 리턴되어지는 부분에 데이터타입이 제거 되어 있다. 당신이 찾아지기 원하는 데이터 타입과 함께 템플릿을 사용하기 위해서는 아래와 같이 사용한다.

템플릿의 최소는 두개의 int[], double[]의 다른 데이터 타입이 사용되어 지는 것이다. 하지만 각각은 같은 기능을 사용하고 있으며 배열안에 최소값을 찾고 있으며 그것을 리턴한다.

함수 템플릿은 종종 inline, extern 또는 static으로 선언될 수도 있다. 그럴때는 템플릿 키워드와 그 파라메터들 뒤에 필드를 넣는것이 중요하다.


클래스 템플릿(Class templates)


 클래스 템플릿을 정의 하는것은 함수 템플릿을 정의하는것과 거의 유사하다.
다른 데이터타입의 스택을 조절하는 일반적인 스택 클래스로 시작할때 내가 사용 하는 샘플을 보자
그 프로토 타입은 아래에 정의 되어 있다.


 그 구현은 약간의 좀더 다른 표기법을 제외하고는 다른 보통의 클래스 구현과 많이 다르지 않다. 클래스 템플릿이 정의되어질때 일반적인 클래스와 같이 사용되어 질 수 있지만, 당신은 < 와 > 사이에 파라메터를 지정하거나, 템플릿 안에서 클래스 이름은 파라메터 없이 사용되어 질 수 있다.  그래서 당신을 위한 스택 샘플의 구현을 보면:

당신은 클래스 템플릿을 새로운 변수로 선언하여 다음과 같이 사용할 수 있다. :

To be continued...
In Part II I'll handle more advanced template functionality like templates inside a template, using friend definitions in templates and some other stuff...

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.

Author
Stefan Spenz : http://www.codeproject.com/script/Membership/Profiles.aspx?mid=11041

"C++, STL" 분류의 다른 글

[번역] A Beginners guide to Templates - Part 2 (0)2009/03/13
2009/03/10 02:03 2009/03/10 02:03

이 글의 트랙백 주소 :: http://radicaled.org/blog/trackback/22

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

[로그인][오픈아이디란?]