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 }
View Code

(二)函数模板引入:函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定其功能。

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 }
View Code

运行结果

原文地址:https://www.cnblogs.com/luxiaoguogege/p/9707981.html