C++
-
C++ 函数虚表 Virtual Table
这篇文章围绕 C++ 虚函数表的实现机制展开,目的是解释编译器如何借助 virtual table 和隐藏的 vptr 指针实现运行时多态。正文先说明含有虚函数的类为何会拥有独立的虚表以及对象中额外的 vptr,然后通过基类指针指向派生类对象的例子解释虚函数调用如何最终跳转到正确实现,最后将直接调用、函数指针间接调用和虚函数调用做对比,分析虚表带来的额外访存步骤和对象尺寸开销。
这篇文章围绕 C++ 虚函数表的实现机制展开,目的是解释编译器如何借助 virtual table 和隐藏的 vptr 指针实现运行时多态。正文先说明含有虚函数的类为何会拥有独立的虚表以及对象中额外的 vptr,然后通过基类指针指向派生类对象的例子解释虚函数调用如何最终跳转到正确实现,最后将直接调用、函数指针间接调用和虚函数调用做对比,分析虚表带来的额外访存步骤和对象尺寸开销。