首页  >  文章  >  后端开发  >  C 编译器中是否有虚拟函数调用的替代实现?

C 编译器中是否有虚拟函数调用的替代实现?

Linda Hamilton
Linda Hamilton原创
2024-11-02 05:07:02831浏览

Are There Alternative Implementations for Virtual Function Calls in C   Compilers?

替代的虚拟函数调用实现

而虚拟表和虚拟指针机制通常用于在C编译器中实现虚拟函数的动态调度,有没有采用替代方法的编译器?

编译器实现

绝大多数 C 编译器,包括 G 和 Microsoft Visual Studio,都使用虚拟表和虚拟动态调度的指针方法。然而,在极少数情况下,编译器可能会以不同的方式实现它。例如,某些编译器可能使用类似于对象内指针的东西,其中虚拟函数指针存储在对象本身内。对于具有大量基数和数组的复杂对象来说,此类实现可能更有效,因为它们只需要映射表中的单个条目来表示数组中的所有对象。

对象大小和虚拟函数

“任何只有虚函数的类的大小将是该编译器上指针(其中的 vptr)的大小”的说法通常是正确的,因为虚拟指针通常存储为物体。然而,在使用不同虚拟分派方法的替代实现中,情况可能并不总是如此。

总之,虽然虚拟表和虚拟指针机制是 C 编译器中最流行的动态分派实现,但有些编译器可以针对某些优化场景采用替代方法。使用的具体实现可能会影响存储要求和查找效率等因素。

以上是C 编译器中是否有虚拟函数调用的替代实现?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn