【C++】简述虚函数表的初始化时机
虚函数表vtable的初始化时机虚函数表的初始化分为两个阶段一个是编译/链接期一个是运行期二者分工不同编译/链接期vtable 结构的确定静态阶段编写包含虚函数的类比如class A { virtual void f(); }并编译时编译器会为每个包含虚函数的类或继承了虚函数的子类生成一份固定的 vtable 数据结构本质是函数指针数组。这个 vtable 会被编译到程序的只读数据段.rodata中和代码段一样是程序启动前就确定好的“静态数据”。此时 vtable 里已经填好了各个虚函数的地址比如A::f的地址。运行期vptr虚函数表指针的初始化动态阶段每个包含虚函数的对象都会有一个隐藏的vptr成员指向所属类的 vtable这个指针的初始化对于普通对象vptr在对象构造函数执行的最开始阶段完成初始化早于构造函数的函数体执行子类对象构造时会先初始化父类的vptr再初始化子类自己的vptr。对于全局/静态对象vptr在程序启动后的全局初始化阶段main 函数执行前完成。对于 new 创建的对象vptr在operator new分配内存后、构造函数执行前初始化。验证代码C#includeiostreamusingnamespacestd;classBase{public:Base(){// 此时 vptr 已经指向 Base 的 vtable调用虚函数会走 Base 版本func();// 输出 Base::func}virtualvoidfunc(){coutBase::funcendl;}};classDerived:publicBase{public:Derived(){// 此时 vptr 已经切换到 Derived 的 vtablefunc();// 输出 Derived::func}voidfunc()override{coutDerived::funcendl;}};intmain(){Derived d;// 构造过程// 1. 初始化 Base 部分 → vptr 指向 Base::vtable → 调用 Base::func// 2. 初始化 Derived 部分 → vptr 切换到 Derived::vtable → 调用 Derived::funcreturn0;}输出结果Base::func Derived::func即vptr在构造函数执行时已经完成初始化且子类构造时会覆盖父类的vptr。常见误区❌ 错误“每次创建对象都会生成新的 vtable”✅ 正确一个类只有一份 vtable编译期确定所有对象的vptr都指向这份 vtable。❌ 错误“vptr 在构造函数体执行后初始化”✅ 正确vptr初始化在构造函数的“初始化列表阶段”编译器自动插入早于函数体执行。❌ 错误“虚函数表在运行时动态生成”✅ 正确vtable 本身是编译期生成的静态数据运行时只初始化vptr指向它。总结虚函数表vtable本身编译/链接期生成存储在只读数据段属于类的静态资源全局唯一。虚函数表指针vptr运行期初始化普通对象在构造函数执行前完成子类构造时会覆盖父类的vptr。核心逻辑vtable 是“静态模板”vptr 是“动态指针”二者结合实现多态。

相关新闻

攻防失衡?AI安全新秩序:OpenAI+Anthropic 2025-2026全景解析与2027前瞻

攻防失衡?AI安全新秩序:OpenAI+Anthropic 2025-2026全景解析与2027前瞻

当AI模型能力突破“人类级”阈值,其在网络安全领域的应用已从“辅助工具”升级为“核心攻防主体”。2025至2026年,全球顶尖AI实验室OpenAI与Anthropic迎来战略分化与全面发力,彻底打破以往“安全研究仅停留在防御层面”的行业格局&#xff0c…

2026/7/5 3:16:57 阅读更多 →
《凌微经》附录二:核心概念与术语图谱

《凌微经》附录二:核心概念与术语图谱

返回《凌微经》总目录 附录二:核心概念与术语图谱 元逻辑,指不依赖主观思维的客观差异界分及其递归的事件与过程,也即事实与呈现。其本质是关系相对性与相对关系于“形性一体”之本然必然的演绎——关系的事实呈现(形态样貌&…

2026/5/17 10:19:49 阅读更多 →
OFA视觉蕴含模型惊艳效果:艺术风格图像与诗意文本的匹配探索

OFA视觉蕴含模型惊艳效果:艺术风格图像与诗意文本的匹配探索

OFA视觉蕴含模型惊艳效果:艺术风格图像与诗意文本的匹配探索 1. 项目概述 今天要跟大家分享一个让我眼前一亮的AI应用——基于OFA模型的视觉蕴含推理系统。这个系统最厉害的地方在于,它能像人一样理解图片和文字之间的关系,判断图片内容是否…

2026/7/4 22:50:49 阅读更多 →

最新新闻

BLAST安全最佳实践:10个关键步骤保护你的AI浏览服务 [特殊字符]️

BLAST安全最佳实践:10个关键步骤保护你的AI浏览服务 [特殊字符]️

BLAST安全最佳实践:10个关键步骤保护你的AI浏览服务 🛡️ 【免费下载链接】blast Open-source VMs-as-a-service 项目地址: https://gitcode.com/gh_mirrors/blast14/blast 在当今AI技术快速发展的时代,BLAST作为开源的高性能Web浏览A…

2026/7/5 19:43:46 阅读更多 →
零基础AI换脸完全指南:roop-unleashed快速上手终极教程

零基础AI换脸完全指南:roop-unleashed快速上手终极教程

零基础AI换脸完全指南:roop-unleashed快速上手终极教程 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要体验电影级的AI换脸效果却担心技术门…

2026/7/5 19:41:46 阅读更多 →
免费压缩包密码恢复工具:3分钟找回遗忘密码的完整指南

免费压缩包密码恢复工具:3分钟找回遗忘密码的完整指南

免费压缩包密码恢复工具:3分钟找回遗忘密码的完整指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经因为忘记ZIP、…

2026/7/5 19:41:46 阅读更多 →
一站式音乐聚合方案:LX Music音源项目深度解析与实战指南

一站式音乐聚合方案:LX Music音源项目深度解析与实战指南

一站式音乐聚合方案:LX Music音源项目深度解析与实战指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否厌倦了在不同音乐应用间频繁切换?是否因为平台版权限制而无…

2026/7/5 19:37:45 阅读更多 →
Memcached Session Manager集群部署:大规模Web应用架构设计指南

Memcached Session Manager集群部署:大规模Web应用架构设计指南

Memcached Session Manager集群部署:大规模Web应用架构设计指南 【免费下载链接】memcached-session-manager A tomcat session manager that backups sessions in memcached and pulls them from there if asked for unknown sessions 项目地址: https://gitcode…

2026/7/5 19:37:45 阅读更多 →
Vue-Croppa开发路线图:未来功能更新与社区贡献指南

Vue-Croppa开发路线图:未来功能更新与社区贡献指南

Vue-Croppa开发路线图:未来功能更新与社区贡献指南 【免费下载链接】vue-croppa A simple straightforward customizable mobile-friendly image cropper for Vue 2.0. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-croppa Vue-Croppa是一款简单直观、高…

2026/7/5 19:35:44 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻