#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;
}
//组织结构清晰
//可读性强
//对于前期和后期维护性高
c++多态 计算器类
最新推荐文章于 2023-04-04 20:51:47 发布