在以下情况下发生的重载和覆盖:编译或运行时

Don*_*Lun 0 oop

重载和覆盖:哪一个在编译时发生,哪一个在运行时发生?

Jon*_*eet 6

这取决于您使用的语言,以及您如何使用它.

例如,在Java中,重载决策始终在编译时执行,并且在执行时执行覆盖分辨率.

在C#中,它通常仍然正确的 - 但如果您使用的是C#4的动态类型,则在执行时也会执行重载决策:

static void Foo(int y) {}
static void Foo(string y) {}

...
dynamic x = 10;
Foo(x); // Calls Foo(int)
x = "hello";
Foo(x); // Calls Foo(string)
Run Code Online (Sandbox Code Playgroud)

还有很多其他语言也是动态表现的.因此,您确实需要了解当时使用的语言的行为.