函数模板
函数模板的声明格式如下:
template <类型名称 T>
返回值类型 函数名称(参数列表) {
函数体
}
关键字template
后接的是模板形参表,是用尖括号括住的一个或者多个模板形参的列表,形参之间使用逗号分隔,模板形参表不能为空。模板形参可以使用表示类型的类型形参,也可以是表示常量表达式的费类型形参。类型形参跟在关键字class
或者typename
后定义,其意义相同,只是typename
是由标准 C++提供的,旧版 C++可能只能使用class
关键字。类型形参的名称可以随意命名,但在之后的使用过程中需要保持一致,并且不能重用。
以下给出一个用于比较的函数模板示例。
template <typename T>
int compare(const T& v1, const T& v2) {
if (v1 < v2) return -1;
if (v1 > v2) return 1;
return 0;
}
函数模板在调用时会自动进行推断,由编译器决定调用哪个版本。