函数重载

Function Overloading oop

函数重载是否与我们可以在 Derived 中实现的函数覆盖相同 class ???

我们可以把它也称为函数重载吗

class Base {
public:
    void display(int a) {

        cout << "Base class";
    }
};
class dervived :public Base {
public:
    void display(int a,int b)
    {
        Base::display(6);
    //  cout << "Devived Class";
    }
};

对于OOP究竟是什么,目前还没有一致的看法。但是,从广义上讲,OOP 需要动态(或"late")绑定:一个操作是根据一个对象(或多个对象)的运行-时间类型来调度的, 在多重调度下)。

函数重载,例如在 C++ 中的体现,是 static;编译器根据静态类型信息在 运行 时间之前解析任何给定函数调用调用的目标。它是静态多态的一种形式。

Early/static 绑定只能在编译器知道所涉及对象的确切类型的情况下替换 late/dynamic 绑定。

如果程序中的任何地方都可以做到这一点,那么可以说,它实际上没有任何部分是面向对象的。

强烈建议阅读静态与动态多态性。但要回答你的问题:

重载是静态多态性的一个例子,也就是编译时发生的多态性。当您重载方法时,编译器会在内部将它们映射为单独的函数调用,并且在最终的二进制文件中,将重载函数命名为不同的东西没有什么不同。

覆盖是动态多态性的一个例子,也就是发生在 运行 时间的多态性。当你重写一个方法时,它实际上替换了对象实例化时被重写的方法。

如果您创建对象的子类,这一点最为明显;所述子类将可以访问两个重载方法,但只能访问覆盖方法。