利用多态实现计算器
多态优点:1、代码组织结构清晰
2、可读性强
3、利于前期后期的扩展以及维护
//多态使用条件//核心:当父类的指针或者引用指向子类对象时,发生多态
#include <iostream>
using namespace std;
#include <string>
//实现计算器的抽象类
class AbstractCalculator
{
public:
virtual int getResult()
{
return 0;
}
int m_Num1;
int m_Num2;
};
//加法
class AddCalculator :public AbstractCalculator
{
public:
int getResult()
{
return m_Num1 + m_Num2;
}
};
//减法
class SubCalculator :public AbstractCalculator
{
public:
int getResult()
{
return m_Num1 - m_Num2;
}
};
//乘法
class MulCalculator :public AbstractCalculator
{
public:
int getResult()
{
return m_Num1 * m_Num2;
}
};
//除法
class DivCalculator :public AbstractCalculator
{
public:
int getResult()
{
return m_Num1 / m_Num2;
}
};
void test01()
{
//多态使用条件
//父类指针或者引用指向子类对象
//加法实现
AbstractCalculator * abc = new AddCalculator;
abc->m_Num1 = 10;
abc->m_Num2 = 10;
cout << abc->m_Num1 << " + " << abc->m_Num2 << " = " <<abc->getResult() << endl;
//用完后记得销毁
delete abc;
//减法实现
abc = new SubCalculator;
abc->m_Num1 = 10;
abc->m_Num2 = 10;
cout << abc->m_Num1 << " - " << abc->m_Num2 << " = " <<abc->getResult() << endl;
delete abc;
//乘法实现
abc = new MulCalculator;
abc->m_Num1 = 10;
abc->m_Num2 = 10;
cout << abc->m_Num1 << " * " << abc->m_Num2 << " = " <<abc->getResult() << endl;
delete abc;
//除法实现
abc = new DivCalculator;
abc->m_Num1 = 10;
abc->m_Num2 = 10;
cout << abc->m_Num1 << " / " << abc->m_Num2 << " = " <<abc->getResult() << endl;
delete abc;
}
int main()
{
test01();
system("pause");
return 0;
}