欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > C++——多态经典案例(三)计算器

C++——多态经典案例(三)计算器

2024/10/24 19:26:08 来源:https://blog.csdn.net/qq_41264055/article/details/140937234  浏览:    关键词:C++——多态经典案例(三)计算器

案例:使用多态实现一个简单的计算器,计算两个数的加减乘除结果

分析:定义一个抽象类AbstractCalc ,其内部定义一个纯虚函数getResult,用于得到计算结果
定义加减乘除四个类,分别继承这个抽象类AbstractCalc,重写内部的纯虚函数getResult,只不过根据各种需求重新内容不同而已
最后可以通过父类指针指向子类对象进行调用加减乘除各自对父类的纯虚函数重写后的getResult函数即可

#include<iostream>
class AbstractCalc 
{
public:virtual int getResult() = 0;int getNum1() {return m_num1;}int getNum2(){return m_num2;}void setNum1(int num){m_num1 = num;}void setNum2(int num){m_num2 = num;}private:int m_num1;int m_num2;
};class AddCal :public AbstractCalc
{
public:virtual int getResult(){return getNum1() + getNum2();}};
class SubCal :public AbstractCalc
{
public:virtual int getResult(){return getNum1() - getNum2();}};class MulCal :public AbstractCalc 
{
public :virtual int getResult(){return getNum1() * getNum2();}};class DivCal :public AbstractCalc
{
public:virtual int getResult(){return getNum1() / getNum2();}};int main()
{AbstractCalc *calc_add = new AddCal;calc_add->setNum1(10);calc_add->setNum2(20);std::cout << calc_add->getResult() << std::endl;//10+20=30delete calc_add;AbstractCalc* calc_sub = new SubCal;calc_sub->setNum1(20);calc_sub->setNum2(2);std::cout << calc_sub->getResult() << std::endl;//20-2=18delete calc_sub;//乘除里面有一些小细节,这里只是为了距离更好理解多态,具体小细节就不再赘述了,自己可以去完善实现,注意除法分母不为0等一些小细节AbstractCalc* calc_mul = new MulCal;calc_mul->setNum1(2);calc_mul->setNum2(2);std::cout << calc_mul->getResult() << std::endl;//2*2=4delete calc_mul;AbstractCalc* calc_div = new DivCal;calc_div->setNum1(18);calc_div->setNum2(9);std::cout << calc_div->getResult() << std::endl;//18/9=2delete calc_div;return 0;
}

运行效果:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com