函数模板
1.函数模板的写法
#include<iostream>
using namespace std;
void mySwapInt(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void mySwapDouble(double &a,double &b)
{
double temp=a;
a=b;
b=temp;
}
//利用模板技术实现通用交换函数
template<typename T>//T是一个通用类型,告诉编译器后面紧跟着的函数或者类中出现了T,不要报错
void mySwap(T &a,T &b)
{
T temp=a;
a=b;
b=temp;
}
template<typename T>
void mySwap2()
{
}
int main()
{
int a=10;
int b=20;
char e='e';
//mySwapInt(a,b);
//1.自动类型推导必须让编译器推导出一致的T
//mySwap(a,e);error a,e不能推导出一致的T类型
//2.显示指定类型
mySwap<int>(a,b);//可以进行隐式类型转换,如果转不成功,也不可以使用模板
mySwap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
double c=3.14;
double d=3.1415926;
mySwap(c,d);
cout<<"c="<<c<<endl;
cout<<"d="<<d<<endl;
//模板必须指定出类型才可以使用
mySwap2<int>();
system("pause");
return 0;
}