【发布时间】:2016-02-10 20:11:04
【问题描述】:
我来自 C++ 世界,您可能知道那里只有一个虚拟方法关键字,即 virtual。因此,在 C++ 中,您使用相同的 virtual 关键字重新定义派生类中的虚拟方法(在 C# 中,您使用 override)。我完全了解多态性以及“覆盖”和new 如何在 C# 中工作。但是,我无法在书中找到为基类和派生类中的虚拟方法创建两个不同关键字的想法,即virtual 和override 对应?还是只是为了清楚起见?
【问题讨论】:
-
你的 C++ 知识有点过时了。从 C++11 开始,如果您使用
override关键字,编译器知道如何交叉检查被覆盖的虚函数的签名(请注意,它与virtual放在函数签名中的位置不同) -
如果您使用
new,每个类的基类或派生类都会调用它们自己的方法。如果您使用override基类和继承类,请使用覆盖方法(在派生类中)。
标签: c# virtual-functions