Loading...

오버로딩 (함수 템플릿)

템플릿함수도 같은이름의 함수를 여러개 쓰는 오버로딩이 가능하다. 아래의 예를 보면 같은 이름으로 오버로딩된 템플릿 함수들과 일반 함수를 볼 수 있다. inline int const& max(int const& a, int const& b) { return a < b ? b : a; } template inline T const& max(T const& a, T const& b) { return a < b ? b : a; } template inline T const& max(T const& a, T const& b, T const& c) { return ::max(::max(a,b), c); // int, int일 경우 가장 위의 nontemplete호출. } int _tmain(int argc, _TC..

인자추론

template inline T1 max(T1 const& a, T2 const& b) { return a < b? b:a; }; 위의 함수는 간단히 큰 함수를 반환하는 함수이다. 이를 사용할때 조심해야 할 부분이 있다. max(2,2,7); 을 사용하게 되면 분명 큰 수는 2.7이지만 반환값은 2가 된다. 그 이유는 반환값이 T1으로 되어있기 때문이다. 그렇다고 반환값을 T2로 할수도 없다. 이를 위한 해결로 아래와 같이 인자를 세개를 받도록 한다. template inline RT max(T1 const& a, T2 const& b) { return a < b? b:a; }; 첫번째 인자로 반환자료형을 받는데 첫번째 인자로 둔 이유는 간단하다. 인자추론을 사용하여 사용시 간편하게 하기 위해서이다. 만..