假设我现在想要比较两个整数的大小,于是我把这一功能写成一个函数,通过函数来实现,然后,我在主函数中调用这个函数就可以了。那假如我又想比较两个float类型的数据的大小,两个double类型的数据的大小,那岂不是我得再重写函数,这样一来,就会显得相当的麻烦。为了节省代码,解决这一麻烦,C++引入了模板这一概念。那么,在定义一个模板函数之前,得加上那么一句话,用来申请模板变量。
template < typename T >
这样一来,就可以用T来表示各个数据类型了。现在,我来写一个找出最大值的函数。
T& max ( T& a, T& b ){ return ( ( a > b ) ? a: b ); }
当然,函数模板还支持数组类型的。比如,我在主函数中,写了这么些代码:
int main ( int argc, char** argv ){ char a[] = "chen"; char b[] = "tong"; //此时T = char[3]类型 }
如果是传引用,那么必须得保证两个参数的数据长度一样,但是如果传的是指针,那么参数长度就算不一样也不会有任何问题。代码如下:
template < typename T > T* mymax ( T* a, T* b ){ return ( a > b > ? a: b; }
本文出自 “梵高说我脑子有病” 博客,请务必保留此出处http://chen0547.blog.51cto.com/12489941/1979854
原文地址:http://chen0547.blog.51cto.com/12489941/1979854