1 int Add(int x,int y)
2 {
3 return x+y;
4 }
5
6 double Add(double x,double y)
7 {
8 return x+y;
9 }
10
11 long Add(long x,long y)
12 {
13 return x+y;
14 }

1 #include "stdafx.h"
2 #include <iostream>
3
4 template <typename T>//加法函数模板
5 T Add(T x,T y)
6 {
7 return x+y;
8 }
9
10 int main()
11 {
12
13 int x=10,y=10;
14 std::cout<<Add(x,y)<<std::endl;//相当于调用函数int Add(int,int)
15
16 double x1=10.10,y1=10.10;
17 std::cout<<Add(x1,y1)<<std::endl;//相当于调用函数double Add(double,double)
18
19 long x2=9999,y2=9999;
20 std::cout<<Add(x2,y2)<<std::endl;//相当于调用函数long Add(long,long)
21
22 return0;
23 }


1 #include "stdafx.h"
2 #include <iostream>
3
4 template <typename T1,typename T2>//多类型参数的函数模板
5 T1 Add(T1 x,T2 y)
6 {
7 return x+y;
8 }
9
10 int main()
11 {
12 int x=10;
13 double y=10.10;
14 std::cout<<Add(x,y)<<std::endl;//相当于调用函数int Add(int,double)
15 std::cout<<Add(y,x)<<std::endl;//相当于调用函数double Add(double,int)
16
17 return0;
18 }


1 #include "stdafx.h"
2 #include <iostream>
3
4 template <typename T>//加法函数模板
5 T Add(T x,T y)//二元
6 {
7 std::cout<<"调用模板函数:";
8 return x+y;
9 }
10
11 template <typename T>//重载加法函数模板
12 T Add(T x,T y,T z)//三元
13 {
14 std::cout<<"调用重载模板函数:";
15 return x+y+z;
16 }
17
18
19 int main_19()
20 {
21 double x1=10.10,y1=10.10;
22 std::cout<<Add(x1,y1)<<std::endl;//调用模板函数
23 //相当于调用函数double Add(double,double)
24 std::cout<<Add(x1,y1,y1)<<std::endl;//调用重载模板函数
25 //相当于调用函数double Add(double,double,double)
26
27 return0;
28 }


1 #include "stdafx.h"
2 #include <iostream>
3
4
5 template <typename T>//加法函数模板
6 T Add(T x,T y)
7 {
8 std::cout<<"调用模板函数:";
9 return x+y;
10 }
11
12 int Add(int x,int y)
13 {
14 std::cout<<"调用非模板函数:";
15 return x+y;
16 }
17
18
19 int main()
20 {
21 int x=10,y=10;
22 std::cout<<Add(x,y)<<std::endl;//调用非模板函数
23
24 double x1=10.10,y1=10.10;
25 std::cout<<Add(x1,y1)<<std::endl;//调用模板函数
26
27 return0;
28 }


