在 C++ 中,我们可以使用函数模板来定义支持 '+', '-', '*', '/' 等算符的模板类。以下是一个示例:

template <typename T, T (*Op)(T, T)>
class Calculator {
public:
    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 subtract(T a, T b) {
    return a - b;
}

template <typename T>
T multiply(T a, T b) {
    return a * b;
}

template <typename T>
T divide(T a, T b) {
    return a / b;
}

int main() {
    Calculator<int, add> addition_calculator;
    Calculator<int, subtract> subtraction_calculator;
    Calculator<int, multiply> multiplication_calculator;
    Calculator<int, divide> division_calculator;

    int result = addition_calculator.calculate(5, 3);
    std::cout << "Addition: " << result << std::endl;

    result = subtraction_calculator.calculate(5, 3);
    std::cout << "Subtraction: " << result << std::endl;

    result = multiplication_calculator.calculate(5, 3);
    std::cout << "Multiplication: " << result << std::endl;

    result = division_calculator.calculate(5, 3);
    std::cout << "Division: " << result << std::endl;

    return 0;
}

在上面的示例中,我们定义了一个模板类 Calculator,它有两个模板参数:T 表示操作数的类型,Op 表示操作符的函数指针。Calculator 类中有一个 calculate 方法,它使用 Op 指定的操作符来计算两个操作数的结果。

然后,我们定义了四个模板函数 addsubtractmultiplydivide,它们分别实现了 '+', '-', '*', '/' 操作符。

main 函数中,我们通过使用不同的操作符函数指针来实例化 Calculator 类,并调用 calculate 方法来执行相应的操作。最后,我们将结果输出到控制台。

注意,这里的示例仅适用于整数类型,如果要支持其他类型(如浮点数),需要相应地修改模板类和函数。

C++ 模板类参数:实现加减乘除运算

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

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