面试题答案
一键面试设计思路
- 模板函数定义:使用模板来处理不同类型的参数,使得函数可以接受各种类型组合。
- 类型转换:在函数内部,根据具体的操作,需要对参数进行适当的类型转换,以确保运算的正确性。例如,如果是加法操作,将较小精度的类型转换为较大精度的类型。
- 函数指针参数:接受一个函数指针作为参数,该函数指针指向要执行的具体操作函数。
代码实现
#include <iostream>
// 示例操作函数:加法
template<typename T1, typename T2>
auto add(T1 a, T2 b) {
return a + b;
}
// 通用的applyOperation模板函数
template<typename Func, typename T1, typename T2>
auto applyOperation(Func func, T1 a, T2 b) {
return func(a, b);
}
int main() {
auto result = applyOperation(add, 5, 3.14);
std::cout << "结果: " << result << std::endl;
return 0;
}
在上述代码中:
add
函数是一个示例操作函数,用于执行加法运算,它也是模板函数以支持不同类型的参数。applyOperation
模板函数接受一个函数指针func
和两个不同类型的参数a
和b
,然后调用func
对a
和b
进行操作并返回结果。- 在
main
函数中,演示了如何调用applyOperation
函数并传入add
函数指针以及int
和double
类型的参数。