面试题答案
一键面试#include <iostream>
#include <type_traits>
// 加法函数模板
template <typename T>
T add(T a, T b) {
return a + b;
}
// 乘法函数模板
template <typename T>
T multiply(T a, T b) {
return a * b;
}
// 类型判断及计算函数模板
template <typename T, typename... Args>
auto calculate(T first, Args... rest) -> decltype(add(first, calculate(rest...))) {
return add(first, calculate(rest...));
}
template <typename T>
auto calculate(T last) -> T {
return last;
}
// 主函数
int main() {
std::cout << "计算结果: " << calculate(1, 2.5, 3.0f) << std::endl;
return 0;
}
上述代码解释:
- 加法和乘法函数模板:定义了
add
和multiply
函数模板,用于实现加法和乘法运算。 - 类型判断及计算函数模板:
calculate
函数模板使用可变参数模板,递归调用自身并结合add
函数进行计算,同时利用decltype
推导返回值类型。终止条件是当只有一个参数时,直接返回该参数。 - 主函数:调用
calculate
函数进行计算,并输出结果。在实际应用中,可以根据需求进一步完善类型兼容性和精度处理,例如添加类型转换逻辑以确保精度损失最小化等。