所在的位置: C++ >> C++前景 >> C语言函数模板是啥

C语言函数模板是啥

让白癜风患者感受中科魅力 http://m.39.net/news/a_6169062.html

函数模板不是函数,它的作用是产生函数,它是一个模板。函数模板的概念有点类似于产品设计图,它本身并不是一个产品,但是它可以制造出产品。

假设我们现在需要将两个int类型的变量相加,可以编写如下函数:

intadd(intx,inty){

returnx+y;

}

如果我们此时需要对double类型的变量进行相加,虽然我们可以使用强制类型转换,但这样一来会使计算结果产生损失,计算的结果就不准确。那么,难道我们还要单独编写一组double类型相加的函数么?基于以上问题,C++提出了函数模板的概念。也称作泛型算法。

函数模板是将数据类型(比如这里的intx)泛型化,或者说模板化。将数据类型变成一个所谓的模板参数,然后把函数变成函数模板,这样就可以编写通用的算法了。就是说C++允许我们编写函数模板。那么怎么编写呢?

用template关键字增加一个模板头,将数据类型变成类型模板参数:

templatetypenameT

Tadd(Tx,Ty){

returnx+y;

}

typename表明了T是类型模板参数,就是说这个T将来是表示数据类型的。这样,我们编写了一个函数模板之后就可以通过模板实例化产生一些具体的函数。比如:

coutaddint(5,3)endl;

编译器在遇到addint的时候,就会自动产生一个int版本的函数,即:

intadd(intx,inty){

returnx+y;

}

此时的int就是类型模板的T。也就是说函数模板实例化之后,它会把T全部替换成int,产生一个int版本的具体的函数。因此,函数模板不是函数,是用来产生函数的一个模板。

这样就节省了我们的工作量,而且不容易出错,我们只要保证模板函数正确就可以了。




转载请注明:http://www.aierlanlan.com/cyrz/4361.html

  • 上一篇文章:
  •   
  • 下一篇文章: