C++ 模板参数:将算符作为函数参数
在 C++ 中,我们可以使用函数模板来将算符作为模板参数。
下面是一个示例代码,展示了如何将加法和乘法作为模板参数:
#include <iostream>
template <typename T, T (*Op)(T, T)>
T calculate(T a, T b) {
return Op(a, b);
}
template <typename T>
T add(T a, T b) {
return a + b;
}
template <typename T>
T multiply(T a, T b) {
return a * b;
}
int main() {
int a = 5;
int b = 3;
int sum = calculate<int, add>(a, b);
std::cout << "Sum: " << sum << std::endl;
int product = calculate<int, multiply>(a, b);
std::cout << "Product: " << product << std::endl;
return 0;
}
在上面的代码中,calculate 模板函数接受两个参数:a 和 b,以及一个函数指针参数 Op。Op 参数表示一个函数,它接受两个 T 类型的参数并返回一个 T 类型的返回值。
然后,我们定义了两个函数模板 add 和 multiply,它们分别执行加法和乘法操作。
在 main 函数中,我们使用 calculate 函数模板来执行加法和乘法操作,并将 add 和 multiply 函数模板作为模板参数传递给 calculate 函数模板。
输出结果为:
Sum: 8
Product: 15
可以看到,通过将算符作为模板参数,我们可以在不同的地方重用同一个 calculate 函数模板,从而避免了重复编写类似的代码。
原文地址: https://www.cveoy.top/t/topic/o61o 著作权归作者所有。请勿转载和采集!