C++标准对虚函数和调用机制的实现没有太多限制。然而,它列出了许多不能被虚拟化的内容,这实际上增加了自由度。从n3797 10.3/1:虚函数支持动态绑定和面向对象编程。然后是关于什么构成“覆盖”和“最终覆盖者”的大量内容。从5.2.2/1:否则[函数是虚拟的],在对象表达式的动态类型中调用其最终覆盖者(10.3);这样的调用称为虚函数调用。[注意:动态类型是当前对象表达式所引用的对象的类型……]因此,C++标准定义了一种基于对象的动态分派的受限形式,除此之外没有太多限制。只要每个对象都携带一个可以调用任何虚函数的机制,其他所有内容都可以随意更改。是的,虚函数表很常见,但并不是最后的选择。它们是一个重要的内存和速度成本,特别是对于多重继承。我可以轻松想出一种不使用虚函数表但同样快速且使用更少对象内存的机制,但需要更多的代码或静态内存空间。各种研究人员已经设计出了大量的技术,甚至有些已经被专利化。有些技术提供更好的类型安全性,或更好的分支预测,甚至更快的查找。我不认为提供链接有太多意义——您也可以轻松找到它们。但是,我不知道是否有任何生产C++编译器使用这些机制。也许现在是时候考虑一种了?