文章作者 100test 发表时间 2007:03:10 16:42:48
来源 100Test.Com百考试题网
若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,就可以把这个程序改写为模板。 C 程序由类和函数组成,所以 C 的模板也分为类模板和函数模板。
1、 函数模板的定义:
•. 函数模板的一般定义形式:
template < 类型形式参数表 > 返回类型 FunctionName( 形式参数表 )
{
// 函数定义体
}
•. 说明:⒈ < 类型形式参数表 > 可以包含基本数据类型,也可以包含类类型。若是类类型,则须加前缀 class 。
⒉这样的函数模板定义不是一个实实在在的函数,编译系统不为其产生任何执行代码。该定义只是对函数的描述,表示它每次能单独处理在类型形式参数表中说明的数据类型。
⒊当编译系统发现有一个函数调用: FunctionName( 实在参数表 ). 将根据实在参数表中的类型,确认是否匹配函数模板中对应的形式参数表,然后生成一个重载函数。该重载函数的定义体和函数模板的函数定义体相同,而形式参数表的类型则以实在参数表的实际类型为依据。该重载函数称为模板函数。
•. 函数模板与模板函数的区别:
函数模板是模板的定义,定义中用到通用类型参数。
模板函数是实实在在的函数定义,它由编译系统在碰见具体的函数调用时所生成,具有程序代码。
例 1 : #include
template
T max(T a,T b)
{
return a>b?a:b.
}
void main()
{
cout<<”Max(3,5) is”< cout<<”Max(‘ 3 , 5 ) is:<