-template이란? 
sub program이 아무 타입의 parameter라도 받아올 수 있게 만들어주는 c++의 기능이다. 이런 개념을 일반적으로 "generic -" 이라는 말을 붙여서 사용한다. generic function, generic class 등... 



-왜 필요한가? 

 두개의 값을 받아서 서로 바꿔주는 서브프로그램 swap을 만든다고 가정하자. 


이런 함수를 짜놨는데  double 도 입력받아서 그대로 처리했으면 좋겠고,
char도 처리했으면 좋겠다. 
함수 내부 내용은 똑같을테니까 또 짜기가 귀찮다. 
그럴때 template을 사용한다


템플릿 선언하여 생성한 class X는 모든 타입을 받을 수 있는 그릇이 된 것이다.
그래서 모든 parameter를 받을 수 있게 된 것이다.

그럼 의문이 생긴다. 
-overloading과의 차이점은 뭘까?

template을 쓰면 받아들이는 parameter는 타입에 무관하게 아무거나 받을 수 있지만
함수 내부 코드는 같은 것이 적용이 된다.
반면에, overloading을 이용하면 함수 body를 따로 선언하는 거기 때문에
받아들이는 타입에 따라서 다른 수행을 하도록 조작하는 것이 충분히 가능하다.
겉으로 보면 같은 기능을 하는 것 처럼 보이지만
template은 방(서브프로그램)으로 들어가는 문이 여러개 인것이고
overloading은 안방(int받아서 계산하는 함수)으로 가든 부엌(char 계산하는 함수)으로 가든 
한개의 문을 열고 들어가야 한다는 것으로 이해하면 될 것 같다.


'프로그래밍 공부 정리 > C++' 카테고리의 다른 글

protected 와 private의 차이  (0) 2014.01.15
template[2]  (0) 2013.12.13
Posted by jeff제프
,