c++多态 计算器类

#include<iostream>
#include<string>
using namespace std;
//多态 计算器类
class caculator {
public:
	int num1;
	int num2;
	int getresult(string a) {
		if(a=="+")
		return num1 + num2;
		if (a == "-")
		return num1-num2;
		if (a == "*")
		return num1*num2;
	}

};
void test1() {
	caculator b;
	b.num1 = 10;
	b.num2 = 10;
	cout<< b.num1<<"+"<< b.num2 <<"="<<b.getresult("+")<<endl;
	cout << b.num1 << "-" << b.num2 << "=" << b.getresult("-") << endl;
	cout << b.num1 << "*" << b.num2 << "=" << b.getresult("*") << endl;
}
//利用多态实现计算器
class abstractcaculator {
public:
	int m_num1;
	int m_num2;
	virtual int getresult() {
		return 0;
	}
};
//加法计算器类
class add :public abstractcaculator {
public:
	int getresult() {
		return m_num1 + m_num2;
	}
};
//减法计算器类
class sub :public abstractcaculator {
public:
	int getresult() {
		return m_num1 - m_num2;
	}
};
//乘法计算器类
class mul :public abstractcaculator {
public:
	int getresult() {
		return m_num1 * m_num2;
	}
};
//多态使用条件
//父类指针或者引用指向子类对象
void test2() {
	abstractcaculator* c=new add;
	c->m_num1 = 10;
	c->m_num2 = 10;
	cout << c->m_num1 << "+" << c->m_num2 << "=" << c->getresult() << endl;
	//用完记得清楚
	delete c;
	 c = new sub;//指针c重新赋值
	c->m_num1 = 10;
	c->m_num2 = 10;
	cout << c->m_num1 << "-" << c->m_num2 << "=" << c->getresult() << endl;
	delete c;
	 c = new mul;
	c->m_num1 = 10;
	c->m_num2 = 10;
	cout << c->m_num1 << "*" << c->m_num2 << "=" << c->getresult() << endl;
	delete c;
}
int main() {
	test1();
	test2();
	system("pause");
	return 0;
}
//组织结构清晰
//可读性强
//对于前期和后期维护性高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值