2010-06-06 7 views
2

함수 오버로드 및 템플릿이 더 많은 기능을 수행하는 경우 템플릿 또는 함수 오버로딩을 위해 어느 것을 사용해야하며 해당 이점은 무엇입니까? 오버로드 기능을템플릿 및 함수 오버로드

답변

6

, 당신은 명시 적으로 각각의 과부하 밖으로 작성해야합니다 :

int max(int x, int y) { return x > y ? x : y; } 
long max(long x, long y) { return x > y ? x : y; } 
char max(char x, char y) { return x > y ? x : y; } 
// etc. 

이 지루한을하지만, 함수 본문은 종류에 따라 서로 다른해야 할 경우 도움이 될 수 있습니다.

템플릿은 동일한 소스 코드를 모든 유형에 사용할 수있는 경우에 적합합니다. 패턴을 지정하면 컴파일러에서 필요에 따라 확장을 생성합니다.

// Can be used with any type that supports ">". 
template<typename T> T max(T x, T y) { return x > y ? x : y; }