#include <iostream>
using namespace std;
//实现计算器抽象类
class AbstractCalculator
{
public:
// virtual int getResult()//虚函数
// {
// return 0;
// }
virtual int getResult()=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;
}
};
void test()
{
//父类的指针或引用指向子类的对象
AbstractCalculator *abc = new AddCalculator; //堆区,
abc->m_Num1 = 60;
abc->m_Num2 = 20;
cout << abc->m_Num1 << "+" << abc->m_Num2 << "=" << abc->getResult() << endl;
//销毁
delete abc;
abc = new SubCalculator;
abc->m_Num1 = 60;
abc->m_Num2 = 20;
cout << abc->m_Num1 << "-" << abc->m_Num2 << "=" << abc->getResult() << endl;
delete abc;
abc = new MulCalculator;
abc->m_Num1 = 60;
abc->m_Num2 = 20;
cout << abc->m_Num1 << "*" << abc->m_Num2 << "=" << abc->getResult() << endl;
delete abc;
}
int main()
{
test();
return 0;
}