在 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 模板函数接受两个参数:ab,以及一个函数指针参数 OpOp 参数表示一个函数,它接受两个 T 类型的参数并返回一个 T 类型的返回值。

然后,我们定义了两个函数模板 addmultiply,它们分别执行加法和乘法操作。

main 函数中,我们使用 calculate 函数模板来执行加法和乘法操作,并将 addmultiply 函数模板作为模板参数传递给 calculate 函数模板。

输出结果为:

Sum: 8
Product: 15

可以看到,通过将算符作为模板参数,我们可以在不同的地方重用同一个 calculate 函数模板,从而避免了重复编写类似的代码。


原文地址: https://www.cveoy.top/t/topic/o61o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录