C++ 58 之 计算器案例

 虚函数,vitual function

C++动态多态性是通过虚函数来实现的,虚函数允许子类(派生类)重新定义父类(基类)成员函数,而子类(派生类)重新定义父类(基类)虚函数的做法称为覆盖(override),或者称为重写。

对于特定的函数进行动态绑定,c++要求在基类中声明这个函数的时候使用virtual关键字,动态绑定也就对virtual函数起作用.

#include <iostream>
#include <string>
using namespace std;

class Cal {
public:
    int m_a;
    int m_b;
    virtual int getRes(){
        return 0;
    }
};

// 加法  子类要重写父类的虚函数
class Add : public Cal {
public:
    virtual int getRes(){
        return m_a + m_b;
    }
};

// 减法
class Sub : public Cal {
public:
    int getRes(){
        return m_a - m_b;
    }
};

int main()
{
    // 多态可以改善代码的可读性和组织性,同时也可以让程序具有可扩展性
    // 动态多态产生条件:
    // 1.要有继承关系
    // 2.父类中有虚函数、子类要重写父类的虚函数
    // 3.父类的指针或引用指向子类的对象
    
    // 加法:写法1 指针 
    // Cal* c1 = new Add;  // 函数名一样,但对象不一样,就执行不同对象里的函数 多态
    // c1->m_a = 1;
    // c1->m_b = 2;
    // cout << c1->getRes() << endl;
    // delete c1;
    // c1 = NULL;

    // 减法:写法1 指针
    // Cal* c1 = new Sub;
    // c1->m_a = 1;
    // c1->m_b = 2;
    // cout << c1->getRes() << endl;
    // delete c1;
    // c1 = NULL;

    // 加法:写法2 引用
    Add a1;
    Cal& c1 = a1;
    c1.m_a = 1;
    c1.m_b = 2;
    cout << c1.getRes() << endl;

    // 减法:写法2 引用
    Sub s1;
    Cal& c2 = s1;
    c2.m_a = 1;
    c2.m_b = 2;
    cout << c2.getRes() << endl;
    
    return 0;
}

 

相关推荐

  1. 【leetcode面试经典150题】56. 基本计算器C++)

    2024-06-17 18:36:04       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 18:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 18:36:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 18:36:04       82 阅读
  4. Python语言-面向对象

    2024-06-17 18:36:04       91 阅读

热门阅读

  1. 超级异地组网工具有哪些?

    2024-06-17 18:36:04       28 阅读
  2. vlan、vxlan、vpc学习

    2024-06-17 18:36:04       31 阅读
  3. QY-22 低功耗墒情监测站 厂家直营 无线传输

    2024-06-17 18:36:04       26 阅读
  4. pytest unittest temp path单元测试创建临时文件

    2024-06-17 18:36:04       40 阅读
  5. 上升 Stable Diffusion之最全详解图解

    2024-06-17 18:36:04       33 阅读
  6. 电脑有线无线一起用怎么设置

    2024-06-17 18:36:04       29 阅读
  7. 使用node写脚本生成小说

    2024-06-17 18:36:04       21 阅读
  8. SOLIDWORKS教育版:开启数字化设计新时代的钥匙

    2024-06-17 18:36:04       35 阅读
  9. 服务器可以充当负载均衡器

    2024-06-17 18:36:04       27 阅读