Dev c++环境下运行的c++代码。编译运行时显示“已停止工作”。
#include<iostream>
using namespace std;
//计算器
class Calculator
{
public:
void setA(int a)
{
this->mA=a;
}
void setB(int b)
{
this->mB=b;
}
void setOperator(string oper)
{
this->mOperator = oper;
}
int getResult()
{
if(this->mOperator == "+")
{
return mA+mB;
}
else if(this->mOperator == "-")
{
return mA-mB;
}
else if(this->mOperator == "*")
{
return mA*mB;
}
else if(this->mOperator == "/")
{
return mA/mB;
}
}
private:
int mA;
int mB;
string mOperator;
};
//这种程序不利于扩展,维护困难,如果修改功能或者扩展功能需要在 源代码基础上修改
//面向对象程序设计一个基本原则:开闭原则(对修改关闭,对扩展开放)
//抽象基类
class AbstractCalculator
{
public:
void setA(int a)
{
this->mA = a;
}
virtual void setB(int b)
{
this->mB=b;
}
virtual int getResult()=0;
protected:
int mA;
int mB;
string mOperator;
};
//加法计算器
class PlusCalculator:public AbstractCalculator
{
public:
virtual int getResult()
{
return mA+mB;
}
};
//减法计算器
class MinusCalculator:public AbstractCalculator
{
public:
virtual int getResult()
{
return mA-mB;
}
};
//乘法计算器
class MultipliesCalculator:public AbstractCalculator
{
public:
virtual int getResult()
{
return mA*mB;
}
};
void DoBusiness(AbstractCalculator* calculator)
{
int a =10;
int b =20;
calculator->setA(a);
calculator->setB(b);
cout<<"计算结果:"<<calculator->getResult()<<endl;
delete calculator;
}
int main()
{
AbstractCalculator* ac;
DoBusiness(ac);
return 0;
}