【入门】C++实现简单计算器

   案例描述:
分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类。

//普通写法  + - * /
class calculator
{
public:
	int GetResult(string s)
	{
		if (s == "+")
			return a + b;
		else if (s == "-")
			return a - b;
		else if (s == "*")
			return a * b;
		else if (s == "/")
			return a / b;
	}
	int a;
	int b;
};
int main()
{
	calculator c;
	string s;
	cout << "输入两个整型数字的+-*/运算:" << endl;;
	cin >> c.a >>s>> c.b;
	cout << "=" << c.GetResult(s) << endl;
	return 0;
}
//多态写法
class AbstractCalculator
{
public:
	virtual int GetResult()
	{
		return 0;
	}
	int a;
	int b;
};
//加法计算器类
class Add :public AbstractCalculator
{
public:
	int GetResult()
	{
		return a + b;
	}
};
//减法计算器类
class Sub :public AbstractCalculator
{
public:
	int GetResult()
	{
		return a - b;
	}
};
//乘法计算器类
class Mul :public AbstractCalculator
{
public:
	int GetResult()
	{
		return a * b;
	}
};
//除法计算器类
class Div:public AbstractCalculator
{
public:
	int GetResult()
	{
		return a / b;
	}
};

void Do(AbstractCalculator& ac2)
{
	ac2.GetResult();
}
int main()
{
	//加法
	//父类的指针或引用,执行子类对象
	AbstractCalculator* ac = new Add;
	ac->a = 10;
	ac->b = 20;
	cout << ac->a << "+" << ac->b << "=" << ac->GetResult() << endl;
	//记得销毁
	delete ac;

	//减法
	ac = new Sub;
	ac->a = 10;
	ac->b = 20;
	cout << ac->a << "-" << ac->b << "=" << ac->GetResult() << endl;
	//记得销毁
	delete ac;
	
	//乘法除法同理

}

你可能感兴趣的:(#,C++,c++)