模板类函数模板
时间:2023-03-28 04:40:01 | 来源:营销百科
时间:2023-03-28 04:40:01 来源:营销百科
模板类函数模板:函数模板(function templates)
使用 函数模板,你可以指定一组基于相同代码但是处理不同类型或类的函数,例如:
template class type void MySwap( type a, type b )
{
type c( a );
a = b; b = c;
}
这段代码定义了一个函数家族来交换函数的参数值。从这个template你可以产生一系列函数,不仅可以交换 整型、 长整型,而且可以交换用户定义类型,如果类的 构造函数和赋值操作符被适当地定义,MySwap函数甚至可以交换类。
另外, 函数模板可以阻止你交换不同类型的对象,因为 编译器在编译时知道参数a和b的类型。
你可以像调用一个普通函数一样调用一个 函数模板函数;不需要特殊的语法。例如:
int i, j;
char k;
MySwap( i, j ); //OK
MySwap( i, k ); //Error, different types.
可以对 函数模板的template参数作外部说明,例如:
templateclass T void f(T) {...}
void g(char j)
{ fint(j);
//generate the specialization f(int)
}
当template参数在外部说明时,普通固定的类型转换会转换函数的参数为相应的 函数模板参数。在上面的的例子中,编译器会将(char j)转换成整型