场景
- 在学习
C/C++的时候, 总不免碰到文章内提起虚函数表(virtual table)或者说vtbl, 还有指向这个vtbl的指针vptr; 问题来了, 到时什么是vtbl呢? 它的作用是什么?
说明
-
vtbl是C++对象模型里的概念, 也是目前C++内存对象里的关键概念, 它主要是用来实现虚函数的寻找问题. 我们都知道虚函数存在的意义主要还是为了继承和多态.vtbl就是用来查找这些虚函数和RTTI信息的. -
C++对象里主要有这类型数据: 非静态数据成员, 静态数据成员, 静态和非静态函数成员 这4种.
-
C++对象模型, 以下的截图引用了<< C++对象模型>>里的图
模型1: 单个全属性的C++对象, 注意第一个对象表里只有非静态成员和vtbl. P10

模型2: 带父类的对象布局, 除了开辟一段区域作为父类的非静态成员用, 还有父类的vptr</
本文介绍了C++中的虚函数表(vtbl)的概念及其作用,它是实现虚函数和多态的关键。讨论了C++对象模型中虚函数表的位置,以及对象内存布局如何处理虚函数。同时提到了成员函数的存储方式,帮助理解虚函数在对象中的工作原理。
订阅专栏 解锁全文
7311

被折叠的 条评论
为什么被折叠?



