虚拟功能的确切需求是什么?

时间:2009-08-24 12:54:41

标签: c# oop

据我所知,它提供了派生类可以覆盖的默认实现。 但这是真正的目的吗?

5 个答案:

答案 0 :(得分:10)

不,这不是他们的确切目的。虚函数是以面向对象语言实现type polymorphism的手段。

答案 1 :(得分:2)

是的,这是确切的目的

答案 2 :(得分:2)

现在,您可以拥有对基类对象的引用集合,并在此处引用派生类对象,通过任何引用调用虚函数,而无需知道实际派生类,并且每次都调用最多派生的覆盖函数。这就是所谓的多态性。

答案 3 :(得分:2)

需要派生类可以覆盖,并且它的行为与您期望的一样。

相反的是,在派生类上创建方法时,指定new关键字 - 在这种情况下,使用与变量类型匹配的函数的版本,因此:

derived foo = new derived();
base foo2 = foo;

foo2.bar(); // If bar() is virtual, and overriden in derived, it will use that implementation.
foo.bar(); // if bar() is not virtual, this may be calling a completely different function, if derived defines a new version

答案 4 :(得分:1)

实现多态性。