C++ 模板类参数:实现加减乘除运算
在 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 指定的操作符来计算两个操作数的结果。
然后,我们定义了四个模板函数 add,subtract,multiply 和 divide,它们分别实现了 '+', '-', '*', '/' 操作符。
在 main 函数中,我们通过使用不同的操作符函数指针来实例化 Calculator 类,并调用 calculate 方法来执行相应的操作。最后,我们将结果输出到控制台。
注意,这里的示例仅适用于整数类型,如果要支持其他类型(如浮点数),需要相应地修改模板类和函数。
原文地址: http://www.cveoy.top/t/topic/kTc 著作权归作者所有。请勿转载和采集!