Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Describe Site/C++/Documents/C++ProgramingHowToPerPage/templates.html here Templates

16. Templates

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 프로그래밍과 코드 재 사용은 더 힘들다.

레퍼런스 :