模板函数(templated-function) 看起来与普通函数类似,但其中的一些类型被模板参数(template-parameter) 作为占位符。例如:

template<typename T>
T ComputeMin(T x, T y) {
    return (x < y) ? x : y;
}

在定义这个模板函数时,编译并不会立即发生。相反,只有当 ComputeMin<> 首次被使用 并提供具体的类型时,编译器才会进行实例化(specialization)。例如:

int iResult = ComputeMin<int>(3, 4);

在这段代码中,T=int 被应用,编译器会为 ComputeMin<int>(3, 4) 生成一个具体的实现。

实际上,你可以省略 <int>,直接写:

int iResult = ComputeMin(3, 4);

因为编译器可以根据参数类型推导出 T=int,从而自动进行模板实例化。

最后修改: 2025年01月30日 星期四 12:48