现在要开发一个用于两个整数的(+-*/)四则运算系统,请使用多态实现。 给出下面的抽象基类框架 class AbstractCaculator{
时间: 2024-01-22 15:18:55 浏览: 32
好的,以下是使用多态实现四则运算系统的抽象基类框架:
```c++
class AbstractCalculator {
public:
virtual double calculate(double num1, double num2) = 0;
};
class AddCalculator : public AbstractCalculator {
public:
double calculate(double num1, double num2) override {
return num1 + num2;
}
};
class SubCalculator : public AbstractCalculator {
public:
double calculate(double num1, double num2) override {
return num1 - num2;
}
};
class MulCalculator : public AbstractCalculator {
public:
double calculate(double num1, double num2) override {
return num1 * num2;
}
};
class DivCalculator : public AbstractCalculator {
public:
double calculate(double num1, double num2) override {
if (num2 == 0) {
throw std::invalid_argument("division by zero");
}
return num1 / num2;
}
};
```
以上代码定义了一个抽象基类 `AbstractCalculator`,它包含了一个纯虚函数 `calculate`,用于计算两个数的结果。然后我们定义了四个具体的实现类 `AddCalculator`、`SubCalculator`、`MulCalculator` 和 `DivCalculator`,分别对应加法、减法、乘法和除法的计算方法。
这样,我们就可以通过多态来实现四则运算系统了。比如,我们可以这样使用:
```c++
double num1 = 10.0, num2 = 5.0;
AbstractCalculator* pAdd = new AddCalculator();
AbstractCalculator* pSub = new SubCalculator();
AbstractCalculator* pMul = new MulCalculator();
AbstractCalculator* pDiv = new DivCalculator();
std::cout << "num1 + num2 = " << pAdd->calculate(num1, num2) << std::endl;
std::cout << "num1 - num2 = " << pSub->calculate(num1, num2) << std::endl;
std::cout << "num1 * num2 = " << pMul->calculate(num1, num2) << std::endl;
std::cout << "num1 / num2 = " << pDiv->calculate(num1, num2) << std::endl;
delete pAdd;
delete pSub;
delete pMul;
delete pDiv;
```
输出结果为:
```
num1 + num2 = 15
num1 - num2 = 5
num1 * num2 = 50
num1 / num2 = 2
```
当然,这只是一个简单的例子,实际应用中可能需要更加复杂的计算方法和数据类型,但是使用多态的思想仍然是一样的。