개발/C++

[C++] 템플릿

hojak99 2017. 2. 16. 00:55

템플릿


좀 더 다양한 타입에 대응할 수 있는 코드를 만들어 낼 수 있다.

템플릿 파라미터에 데이터 타입을 알리는 typename 과 class 는둘 중 아무거나 사용해도 괜찮지만 typename을 사용해야 할 때가 있다.



템플릿 인자추론


함수 템플릿 호출 시에 타입을 명시적으로 지정해주지 않아도 함수 인자로 템플릿 파라미터를 결정하는 것을 말한다. 


template <typename T>
inline T plus(T a, T b);


그렇지만 만약, 위의 plus(1, 0.2) 에서 두 개의 인자가 각각 int, double 일 경우에는 서로 다른 형이기 때문에 동일한 타입의 인자를 받는 T 타입은 인자 추론을 할 수 없어 오류가 발생한다.


이럴 때에는 다음과 같이 타입을 명시적으로 적어주면 된다.

plus<double>(1, 2.1);

plus<int>(1, 2);


다른 방법으로는 아예 서로 다른 타입의 인자를 받을 수 있도록 템플릿 파라미터를 수정하는 방법도 있다.  

Ex) template <typename T, typename Q> ~






:: 출처 및 도움 ::

wikiDocs -- C++ Template Note

반응형