- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先:我在某处读到虚函数的机制未定义。也就是说,这意味着每个编译器都可以不同地实现它。但是,我找到的关于虚函数机制的每篇文章都在谈论 VTBL 和 VPTR。
有没有别的虚函数机制实现?你能举些例子吗?
第二个:不同语言的 VTBL 实现有什么区别?
最佳答案
一个流行的替代方法是 inline caching我认为,它起源于 Smalltalk 系统。
另一种方法是为每个多态方法创建一个类型表,而不是为每个类型创建一个多态方法表 (VMT)。它需要对整个程序进行分析,但使高效的多重继承成为可能。一些 Eiffel 编译器使用这样的方法( more here ,寻找“How do I implement multiple inheritance efficiently?”)。
最后一个还提到了另一种方法,一种基于 switch 语句的方法(在 Eiffel 中检查 ~ 在 C 中切换)。 SmartEiffel 使用它的一个变体,它根据类 ID 进行二分查找。它还需要整个程序分析,但由于更好的指令缓存行为,有时在当前系统上比 VMT 更有效。 (more here,寻找“没有虚函数表的高效动态调度”)。
关于c++ - 虚函数机制实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858675/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!