为何需要函数模板
当我们要实现相同的功能,参数类型却又不同时,可以用函数重载在实现函数名相同的函数,这样编译器可以通过检测不同的参数类型,来调用不同的函数。
既然函数重载区别之一在于参数类型的不同,那么函数的类型能否可以当参数进行传递,从而只需写一个函数就可以实现不同类型参数的传递?通过函数模板可以实现。
函数模板格式
举个简单的例子,交换两个变量的值
template <typename T>
void mySwap(T &a, T &b) // T可以使任意类型
{
T tmp = a;
a = b;
b = tmp;
}
调用函数时,穿参可以隐式调用函数模板,编译器会自己判断变量的类型;
不过,一般调用函数时,需要写明参数类型,格式为:
int a = 1, b = 2;
mySwap<int>(a, b);
cahr a = 'a', b = 'A';
mySwap<char>(a, b);
参数是什么类型 <> 中就写入什么类型
类模板
与函数模板相似,类模板格式与函数模板格式相同
关于类模板:
类模板不能隐式调用,必须说明模板类型;
(未完)