== 模板函数 == 写一个max,求两个东西中较大的一个。 {{{#!cplusplus int max(int a, int b) { return a>b?a:b; } double max(double a, double b) { return a>b?a:b; } string max(string a, string b) { return a>b?a:b; } }}} 它们的算法都是类似的,只是参与运算的对象的类型不同。我们可以把类型定义成一个参数: {{{#!cplusplus template T max(T a, T b) { return a>b?a:b; } }}} 调用方法 {{{#!cplusplus int main() { cout << max(5, 7); cout << max(5.5, 7.5); cout << max(5, 7.5); //error cout << max(static_cast(5), 7.5); cout << max(5, 7.5); cout << max(5, 7.5); } }}} 调用时会自动对模板函数的类型进行推导。前面这个模板还不能对两个C字符串进行比较,比如 {{{#!cplusplus int main() { cout << max("world", "hello"); } }}} 可以对函数进行重载 {{{#!cplusplus char *max(char *a, char *b) { return strcmp(a,b)>0?a:b; } }}} 练习:写一个abs类,可以计算任意类型的数的绝对值 ---- CategoryCpp