Template 는 코드 재사용을 쉽게 만들어 generic 프로그래밍을 가능하게 하는 C++의 특징이다.
아래와 같은 간단한 예를 보자 :
#include <string> #include <iostream> void printstring(const std::string& str) { std::cout << str << std::endl; } int main() { std::string str("Hello World"); printstring(str); } |
printstring() 는 std::string 를 첫번째 인자로 받는다. 따라서 이는 오직 string만 프린트 할 수 있고, 문자배열(char array)을 프린트 하기 위해서는 함수를 오버로딩시키든가 새로운 이름의 함수를 만들어야 한다.
이는 함수의 구현이 중복되므로 좋지 않은 것이고, 유지보수하기가 힘들어지게 된다.
template을 쓰면 우리는 코드를 재사용가능하게 만들 수 있다. 아래와 같은 함수를 보라 :
template<typename T> void print(const T& var) { std::cout << var << std::endl; } |
컴파일러는 우리가 무슨 타입을 넘겨주든지 알아서 print 함수의 코드를 자동으로 만들어 줄 것이다. 이것이 template의 중요한 장점이다. Java는 template이 없고, 따라서 Java에서의 generic 프로그래밍과 코드 재 사용은 더 힘들다.
레퍼런스 :
http://babbage.cs.qc.edu/STL_Docs/templates.htm 미러 : http://www.mike95.com/c_plusplus/tutorial/templates
이것은 #pragma template에 대해 알려준다 : - http://www.dgp.toronto.edu/people/JamesStewart/270/9697f/notes/Nov25-tut.html
매우 좋은 site: http://www.cplusplus.com/doc/tutorial/tut5-1.html http://www.cplusplus.com/doc/tutorial
C++의 검증을 위해 : http://examware.com 에 가서 "Tutorials"를 클릭하고 C/C++ 버튼을 누르시오.
C++ Open books: http://www.softpanorama.org/Lang/cpp.shtml tutorial을 클릭
Templates tutorial : http://www.infosys.tuwien.ac.at/Research/Component/tutorial/prwmain.htm