c++中定义重载函数可以使代码重用,而模版template也是实现代码重用机制的一种工具。它可以把参数类型化,也可以说是抽象化,而到真正调用的时候,系统会识别参数真正的类型,从而自动实例化参数,进行调用。
举个例子,实现两个数交换的函数swap()
实现两个int型数据交换:
swap(int x, int y)
{
int t;
t = x;
x = y;
y = t;
}
但是,当两个数据不只是int型的时候,比如是double型或者是char型的时候,这些代码就不适用了。
但用到模版template的时候,重用性就很高了。
template <class T>
swap(T&x, T&y)
{
T t;
t = x;
x = y;
y = t;
}
上面的T就是一个抽象的类型,真正调用的时候,系统识别T具体是什么类型,就会调用什么类型,这样的代码重用效率是很高的。
完整代码:
#include<iostream>
using namespace std;
template < class T >
void Two_swap(T& x, T& y)
{
T t;
t = x;
x = y;
y = t;
}
int main()
{
int a = 1,b = 2;
double i = 1.1,j = 2.2;
char ch1 = 'A',ch2 = 'B';
Two_swap(a,b);
Two_swap(i,j);
Two_swap(ch1,ch2);
cout<<a<<" "<<b<<endl;
cout<<i<<" "<<j<<endl;
cout<<ch1<<" "<<ch2<<endl;
return 0;
}
运行结果: