重载和覆盖:哪一个在编译时发生,哪一个在运行时发生?
答案 0 :(得分:6)
这取决于您使用的是哪种语言,以及 您使用的语言。
例如,在Java中,重载分辨率始终在编译时执行,并且在执行时执行覆盖分辨率。
在C#中仍然通常为true - 但如果您使用的是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)
还有很多其他语言也表现得很动态。因此,您确实需要了解当时使用的语言的行为。
答案 1 :(得分:2)
重载 - >编译时间 覆盖 - >运行