C++多态实现计算器

简介: C++多态实现计算器

在C++中多态是非常重要的一个概念,多态编程虽然会使代码量变多,但是他的优点也是非常的明显。

#include <iostream>
using namespace std;
class Calculator
{
public:
    int m_Num1;
    int m_Num2;
    virtual int getResult() = 0;
};
class Add : public Calculator
{
public:
    int getResult()
    {
        return this->m_Num1 + this->m_Num2;
    }
};
class Sub : public Calculator
{
public:
    int getResult()
    {
        return this->m_Num1 - this->m_Num2;
    }
};
class Mul : public Calculator
{
public:
    int getResult()
    {
        return this->m_Num1 * this->m_Num2;
    }
};
class Div : public Calculator
{
public:
    int getResult()
    {
        return this->m_Num1 / this->m_Num2;
    }
};
int main(int argc, char **argv)
{
    Calculator *MyCal = new Add;
    MyCal->m_Num1 = 10;
    MyCal->m_Num2 = 12;
    cout << MyCal->getResult() << endl;
    MyCal = new Sub;
    MyCal->m_Num1 = 99;
    MyCal->m_Num2 = 78;
    cout << MyCal->getResult() << endl;
    return 0;
}

运行结果:

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。使用多态提高了代码的维护性(由继承保证),也提高了代码的扩展性(由多态保证)。

相关文章
|
6天前
|
C++ 编译器 存储
|
6天前
|
存储 C++
C++中的多态
C++中的多态
8 0
|
6天前
|
C++
【C++】从零开始认识多态(二)
面向对象技术(oop)的核心思想就是封装,继承和多态。通过之前的学习,我们了解了什么是封装,什么是继承。 封装就是对将一些属性装载到一个类对象中,不受外界的影响,比如:洗衣机就是对洗衣服功能,甩干功能,漂洗功能等的封装,其功能不会受到外界的微波炉影响。 继承就是可以将类对象进行继承,派生类会继承基类的功能与属性,类似父与子的关系。比如水果和苹果,苹果就有水果的特性。
24 1
|
6天前
|
C++
【C++】从零开始认识多态(一)
面向对象技术(oop)的核心思想就是封装,继承和多态。通过之前的学习,我们了解了什么是封装,什么是继承。 封装就是对将一些属性装载到一个类对象中,不受外界的影响,比如:洗衣机就是对洗衣服功能,甩干功能,漂洗功能等的封装,其功能不会受到外界的微波炉影响。 继承就是可以将类对象进行继承,派生类会继承基类的功能与属性,类似父与子的关系。比如水果和苹果,苹果就有水果的特性。
29 4
|
6天前
|
C++
【C++】类与对象(日期计算器)
【C++】类与对象(日期计算器)
19 0
|
6天前
|
存储 编译器 C++
[C++基础]-多态
[C++基础]-多态
|
6天前
|
C++
深入理解 C++ 中的多态与文件操作
C++中的多态是OOP核心概念,通过继承和虚函数实现。虚函数允许对象在相同操作下表现不同行为,提高代码可重用性、灵活性和可维护性。例如,基类`Animal`声明`makeSound()`虚函数,派生类如`Cat`、`Dog`和`Bird`可重写该函数实现各自叫声。C++也提供多种文件操作,如`fstream`库的`ofstream`、`ifstream`用于读写文件,C++17引入的`&lt;filesystem&gt;`库提供更现代的文件操作接口。
20 0
|
6天前
|
存储 C++
【C++进阶(九)】C++多态深度剖析
【C++进阶(九)】C++多态深度剖析
|
6天前
|
编译器 C++
c++的学习之路:23、多态(2)
c++的学习之路:23、多态(2)
22 0
|
6天前
|
编译器 C++
c++的学习之路:22、多态(1)
c++的学习之路:22、多态(1)
21 0
c++的学习之路:22、多态(1)