019_linuxC++之_函数模板引入
(一)首先我们来看非模板程序,函数只是输入不一样的变量就需要构件很多个不一样的函数,那么这样很麻烦,则引入函数模板
1 int& max(int& a, int& b) 2 { 3 return (a < b)? b : a; 4 } 5 6 double& max(double& a, double& b) 7 { 8 return (a < b)? b : a; 9 } 10 11 float& max(float& a, float& b) 12 { 13 return (a < b)? b : a; 14 }
(二)函数模板引入:函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定其功能。
template<类型形式参数表> 返回类型 函数名(形式参数表) { ... //函数体 }
1 #include <iostream> 2 #include <string.h> 3 #include <unistd.h> 4 5 using namespace std; 6 7 template<typename T> 8 T& mymax(T& a, T& b) 9 { 10 cout<<__PRETTY_FUNCTION__<<endl;/*打印函数定义*/ 11 return (a < b)? b : a; 12 } 13 14 int main(int argc, char **argv) 15 { 16 int ia = 1; 17 int ib = 2; 18 double da = 3; 19 double db = 4; 20 mymax(ia, ib); 21 mymax(da, db); 22 23 return 0; 24 }
运行结果