C++函数新增特性 【续2】

函数模板:是通用的函数描述,也就是说,他们使用通用类型来定义函数,其中的通用类型可用具体类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型函数。

函数模板允许以任意类型的方式来定义函数,例如:

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<>.

posted @ 2013-07-19 12:18  sunnie_  阅读(112)  评论(0编辑  收藏  举报