C++函数模板

节省程序员的精力了当然是。。。比如写一个排序算法。。。如果不用模板函数的话要像下边这样。对每种数据类型都要写一个函数。void sort(int data[],int n) ; //整型排序void sort(double data[],int n); //双精度型排序void sor(float data[] ,int n); //浮点型排序……而用模板,只需要写一个模板函数就可以了templatevoid sort(T data[],int n);

 

模版算是C++的独有特性吧,也算是C++中比较难的地方,我平时开发的时候用的非常少,或者几乎没有用到,需要模版的地方是能看懂框架中相关的代码;

模版函数相对还是很简单的,引入模版的目的在于代码的重用;比如算法相似,但是由于数据类型不同,我们不得不把同样的一份代码拷贝两次,而仅仅是为了修改数据类型,那么在引入了函数模版之后,我们可以仅仅用一份代码而表示不同重载函数。

下面介绍一下最简单的函数模版的应用:

template   //定义一个抽象的数据类型T

T myMax(T a, T b) {    //声明函数模板

  return a > b ? a : b; 

}

int main () {

  int  a = 2;

  int b = 3;

  std::cout<

 

  float c = 2.0f;

  float d = 3.0f;

  std::cout<

}

代码在第一次调用myMax()函数时,其参数都是int型,则编译器推导模板参数T为int,编译器会以函数模板为样板,以实际类型int代替函数模板中的抽象类型T,自动为这个函数调用生成一个int类型的版本。

你可能感兴趣的:(C++函数模板)