函数模板
#include<iostream>
using namespace std;
//这样子很不方便,同一个功能的两个函数,只是因为变量类型不一样就要重新写一个减缓函数,
//不方便操作,这时候就序号函数模板来简化操作
//函数的业务逻辑一样
//函数的参数类型不一样
void swap1(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
void swap2(char a,char b)
{
char c;
t=a;
a=b;
b=t;
}
int main01()
{
int a=10,b=20;
char x='a',y='b';
swap1(a,b);
swap2(x,y);
cout<<a<<" "<<b<<endl;
cout<<x<<" "<<y<,endl;
return 0;
}//这样子很不方便,同一个功能的两个函数,只是因为变量类型不一样就要重新写一个减缓函数,
//不方便操作,这时候就序号函数模板来简化操作
//让类型参数化===,方便程序员进行编码
//泛型编程
//template告诉C++编译器 我要开始泛型编程了,看到T,不要随便报错
template <typename T>
void myswap(T &a,T &b)
{
T t;
t=a;
a=b;
b=t;
}
//函数模板的调用
//显示类型 调用
//自动类型 推导
int main()
{
{
int x=10;
int y=20;
//myswap<int>(x,y);//显示类型 调用
myswap(x,y);//自动类型 推倒
cout<<x<<" "<<y<<endl;
}
{
char m='a';
char n='b';
//myswap<char>(m,n);//显示类型 调用
myswap(m,n); //自动类型 推倒
cout<<m<<" "<<n<<endl;
}
return 0;
}