2010-06-06 107 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; }