C++Note 多态案例1---计算器类

多态的优点:

  代码组织结构清晰

  可读性强

  利用前期和后期的扩展和维护

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

普通写法:

复制代码
 1 //普通写法
 2 //计算器类
 3 class Calculator
 4 {
 5 public:
 6     int getResult(string oper)//oper:操作符
 7     {
 8         if (oper == "+")
 9         {
10             return m_Num1 + m_Num2;
11         }
12         else if (oper == "-")
13         {
14             return m_Num1 - m_Num2;
15         }
16         else if (oper == "*")
17         {
18             return m_Num1 * m_Num2;
19         }
20         //如果要扩展新的功能(例如除法) 则需要修改源码 
21         //在实际开发中 提倡  开闭原则
22         //开闭原则:对扩展进行开放 对修改进行关闭
23     }
24     int m_Num1;//操作数1
25     int m_Num2;//操作数2
26 };
27 void test()
28 {
29     //创建计算器对象
30     Calculator c;
31     c.m_Num1 = 10;
32     c.m_Num2 = 10;
33     cout << c.m_Num1 << "+" << c.m_Num2 << "=" << c.getResult("+") << endl;
34     cout << c.m_Num1 << "-" << c.m_Num2 << "=" << c.getResult("-") << endl;
35     cout << c.m_Num1 << "*" << c.m_Num2 << "=" << c.getResult("*") << endl;
36 }
复制代码

多态写法:

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 //多态写法
 4 //实现计算机抽象类
 5 class AbstractCalculator
 6 {
 7 public:
 8     virtual int getResult()
 9     {
10         return 0;
11     }
12     int m_Num1;
13     int m_Num2;
14 };
15 //加法计算器类
16 class AddCalculator :public AbstractCalculator
17 {
18 public:
19     int getResult()
20     {
21         return m_Num1 + m_Num2;
22     }
23 };
24 class SubCalculator :public AbstractCalculator
25 {
26 public:
27     int getResult()
28     {
29         return m_Num1 - m_Num2;
30     }
31 };
32 class MulCalculator :public AbstractCalculator
33 {
34 public:
35     int getResult()
36     {
37         return m_Num1 * m_Num2;
38     }
39 };
40 void test()
41 {
42     //多态使用条件
43     //父类指针或者引用指向子类对象
44     //加法运算
45     AbstractCalculator* abc = new AddCalculator;
46     abc->m_Num1 = 100;
47     abc->m_Num2 = 100;
48     cout << abc->m_Num1 << "+" << abc->m_Num2 << "=" << abc->getResult() << endl;
49     //堆区数据(new 程序员自行开辟释放)   用完后记得销毁
50     delete abc;
51     //减法运算
52     abc = new SubCalculator;
53     abc->m_Num1 = 100;
54     abc->m_Num2 = 100;
55     cout << abc->m_Num1 << "-" << abc->m_Num2 << "=" << abc->getResult() << endl;
56     //用完销毁
57     delete abc;
58 }
59 //多态好处:
60 //1.功能切分  组织结构清晰 可针对某个小技术进行修改完善 不用全部修改
61 //2.可读性强  功能切分后每个功能详细
62 //3.对于前期扩展和后期维护性高
63 int main()
64 {
65     test();
66     system("pause");
67     return 0;
68 }
复制代码

C++开发提倡用多态书写代码

posted on   廿陆  阅读(11)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示