现在要开发一个用于两个整数的(+-*/)四则运算系统,请使用多态实现。 给出下面的抽象基类框架 class AbstractCaculator{ public: void setA(int a){ mA = a; } void setB(int b){ mB = b; } virtual int getResult() = 0; //纯虚函数 protected: int mA; //参与四则运算的第一个数; int mB; //参与四则运算的第二个数; }; 以Ab
时间: 2024-01-06 07:04:45 浏览: 48
stractCaculator为抽象基类,分别派生出加法(AddCaculator)、减法(SubCaculator)、乘法(MulCaculator)和除法(DivCaculator)子类,实现四则运算的功能。
具体实现代码如下:
```c++
#include <iostream>
using namespace std;
class AbstractCaculator {
public:
void setA(int a) {
mA = a;
}
void setB(int b) {
mB = b;
}
virtual int getResult() = 0; //纯虚函数
protected:
int mA; //参与四则运算的第一个数;
int mB; //参与四则运算的第二个数;
};
class AddCaculator : public AbstractCaculator {
public:
virtual int getResult() {
return mA + mB;
}
};
class SubCaculator : public AbstractCaculator {
public:
virtual int getResult() {
return mA - mB;
}
};
class MulCaculator : public AbstractCaculator {
public:
virtual int getResult() {
return mA * mB;
}
};
class DivCaculator : public AbstractCaculator {
public:
virtual int getResult() {
if (mB == 0) {
throw "除数为0";
}
return mA / mB;
}
};
int main() {
AbstractCaculator* caculator = new AddCaculator();
caculator->setA(10);
caculator->setB(20);
cout << caculator->getResult() << endl;
caculator = new SubCaculator();
caculator->setA(10);
caculator->setB(20);
cout << caculator->getResult() << endl;
caculator = new MulCaculator();
caculator->setA(10);
caculator->setB(20);
cout << caculator->getResult() << endl;
caculator = new DivCaculator();
caculator->setA(10);
caculator->setB(0);
try {
cout << caculator->getResult() << endl;
}
catch (const char* msg) {
cerr << msg << endl;
}
delete caculator;
return 0;
}
```
在main函数中,我们分别创建了加法、减法、乘法和除法四个子类的对象,并调用它们的getResult()函数来计算结果。由于DivCaculator子类中进行了除数为0的判断,如果除数为0,则抛出异常并捕获输出错误信息。最后,记得销毁动态申请的对象。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)