模板和函数重载

ckv*_*ckv 2 c++

如果funciton重载和模板服务的目的不同,那么我们应该去哪个模板或函数重载,以及相应的好处是什么.

Jos*_*man 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.
Run Code Online (Sandbox Code Playgroud)

这很乏味,但如果功能体需要根据类型不同,则可能是有益的.

当相同的源代码可用于任何类型时,模板很好.您指定模式,编译器根据需要生成扩展:

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