템플릿
좀 더 다양한 타입에 대응할 수 있는 코드를 만들어 낼 수 있다.
템플릿 파라미터에 데이터 타입을 알리는 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
반응형