面试题答案
一键面试#include <iostream>
// 函数模板定义
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
int intResult = add(3, 5); // 编译器推导T为int
double doubleResult = add(3.5, 5.5); // 编译器推导T为double
std::cout << "int类型相加结果: " << intResult << std::endl;
std::cout << "double类型相加结果: " << doubleResult << std::endl;
return 0;
}
在上述代码中,当调用 add(3, 5)
时,编译器根据传入的参数 3
和 5
的类型,自动推导出函数模板参数 T
为 int
类型。同样,当调用 add(3.5, 5.5)
时,编译器根据传入参数 3.5
和 5.5
的类型,自动推导出函数模板参数 T
为 double
类型。编译器通过传入的实际参数的类型来确定函数模板中类型参数 T
的具体类型,从而实例化出相应类型的函数。