函数模板:是通用的函数描述,也就是说,他们使用通用类型来定义函数,其中的通用类型可用具体类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型函数。
函数模板允许以任意类型的方式来定义函数,例如:
Template<class Any>
void Swap (Any & a, Any & b)
{具体定义}
最新的c++标准使用typename 替代 class。如果考虑向后兼容的话用class比较好。 使用函数Swap()时,编译器将检查所使用的参数类型,并生成相应的函数。
注意:函数模板不恩能够缩短可执行程序。最终的代码不包含任何模板,而只包含了微程序生成的实际函数。使用模板的好处:它使生成多个函数定义更简单、更可靠。
可以像重载的函数一样使用重载的模板。
显示具体化:参数相同,但是需要使用的不同的代码,因此将要更该的成员显式说明。例如:交换job结构的非模板函数、模板函数和具体化的原型:
void Swap (job&, job &);
template <class any>
void Swap (any &, any &);
template<>void Swap<job> (job &, job &);
模板函数实例化:编译器使用模板为特定类型生成函数定义时,得到的是模板实例。实例化在声明前添加:template, 注意具体化是添加:template<>.