我在阅读 Stack Overflow 的问题什么是抽象函数和虚函数之间的区别?,并且想知道在 C# 或者一般情况下是否应该认为每个抽象函数都是虚函数。
对于“必须重载 / 可以重载”这个问题的回答让我有点疑惑。作为一个不懂 C# 的程序员,我倾向于认为抽象函数只是一个编译时的概念,而根据定义,每个抽象函数都应该是虚函数,因为你必须提供至少一个实现,并且还可以在继承体系中提供多个实现。
虚函数也有编译时的维度,因为你不能重写非虚函数,但它们主要是一个运行时的概念,因为它仅仅是基于实际接收者选择正确方法实现。