개발/C++

[C++] 함수 템플릿 오버로딩

hojak99 2017. 2. 16. 01:11

템플릿을 그저 겉핥기 식으로 공부한 것 같아서 다시 공부를 하고 있는데 템플릿으로 오버로딩 할 생각은 하지 않았던 것 같다.





일반함수처럼 함수 템플릿도 오버로딩 할 수 있다.


여기서 중요하게 봐야할 점은 템플릿이 아닌 일반함수가 우선 순위가 높다는 것이다. 


#include <iostream> int plus(int a, int b) { std::cout<<"int plus() 일반 함수 호출"<<std::endl; return a + b; } template <typename T> T plus(T a, T b) { std::cout << "template plus(T a, T b) 템플릿 함수 호출" << std::endl; return a + b; } template <typename T> T plus(T a, T b, T c) { std::cout << "template plus(T a, T b, T c) 템플릿 함수 호출" << std::endl; return a + b + c; } int main() { plus(1, 2); // 일반 함수 호출 plus<>(1, 2); // template plus(T a, T b) 템플릿 함수 호출 plus<double>(1, 2, 3); // template plus(T a, T b, T c) 템플릿 함수 호출 plus('a', 1); // 일반 함수 호출 plus('a', 'b'); // template plus(T a, T b) 템플릿 함수 호출 return 0; } /* 출력 결과 int plus() 일반 함수 호출 template plus(T a, T b) 템플릿 함수 호출 template plus(T a, T b, T c) 템플릿 함수 호출 int plus() 일반 함수 호출 template plus(T a, T b) 템플릿 함수 호출 */


:: 출처 및 도움 :: wikiDocs -- C++ Template Note


반응형