利用多态和普通方式实现计算器功能

//利用普通方式和多态方式实现计算器功能

#include
#include
using namespace std;

//利用普通方式实现
class calculator
{
public:
    //输入两个数字
    int num1;
    int num2;

    int result(string oper)
    {
        int res;
        bool validInput = false;
        while (!validInput)//验证输入运算符的有效性
        {
            switch (oper[0])
            {
            case '+':
                res = num1 + num2;
                validInput = true;
                break;
            case '-':
                res = num1 - num2;
                validInput = true;
                break;
            case '*':
                res = num1 * num2;
                validInput = true;
                break;
            default:
                cout << "请输入正确内容。" << endl;
                cout << "请重新输入运算符:" << endl;
                cin >> oper;
                break;
            }
        }
         
        return res;
    }
};

void test01()
{
    calculator c;
    string oper;
     
    c.num1 = 23;
    c.num2 = 34;

    cout << "输入你想进行的计算:";
    cin >> oper;
    int result = c.result(oper);
    cout << "运算结果是:" << result << endl;
}

//利用多态方式实现计算器
//抽象计算器类
class Abstractcalculator
{
public:
    int num1, num2;
    virtual int getResult()
    {
        return 0;
    }
};

//加法运算
class Addcalculator :public Abstractcalculator
{
public:
    int getResult()
    {
        return num1 + num2;
    }
};

//减法运算
class Subcalculator :public Abstractcalculator
{
public:
    int getResult()
    {
        return num1 - num2;
    }
};

//乘法运算
class Mulcalculator :public Abstractcalculator
{
public:
    int getResult()
    {
        return num1*num2;
    }
};

void test02()
{//父类的指针指向子类对象
    //加法
    Abstractcalculator* p = new Addcalculator;

    p->num1 = 120;
    p->num2 = 56;

    
    std::cout<num1<< "+" << p->num2 << "=" << p->getResult() << endl;
    delete p;

    p = new Subcalculator;

    p->num1 = 120;
    p->num2 = 56;
    std::cout << p->num1 << "-" << p->num2 << "=" << p->getResult() << endl;
    delete p;
}
int main()
{
    //test01();
    test02();
    return 0;

}

你可能感兴趣的:(c++,算法,开发语言)