我知道两者之间的区别。重写基本上可以让你“重新定义”你的子类中的方法,并且重载基本上可以让你用不同的参数或参数“重新定义”你的方法。尽管如此,我仍然对发生了什么事情感到困惑。我读过,当你重载一个方法时,编译器将会拥有所有重载方法,并找到最佳匹配或报告错误(如果不存在)。这显然是在编译期间完成的,但我对Override的工作原理感到困惑。我读过处理覆盖是非常困难的,因为你必须检查返回值类型与类层次结构相匹配,并且可以有很多级水平的检查C++方法覆盖和重载(编译级别)
(即一流的生活是超类人类和动物。人类和动物可以有许多派生类,这意味着我们将有一个深层次的阶级)。
没有得到太多的细节,如何重写工作在编译器级别,为什么它是压倒一切的是在运行时完成的,而不是编译时间?
AHHHH首要用于多态性与多态性在运行时期间使用。有了这个逻辑,在运行时重写就应该是微不足道的! –
还有一个问题。运行时vtables如何做以及如何/何时用函数指针填充? –
@JustinCase我添加了关于vtable如何工作的更多细节。 – user1937198