C++ 虚函数表和虚函数表指针的创建时机

一、虚函数表的创建时机

  • 编译器发现类中包含virtual关键字修饰的函数

  • 虚函数表的内容在编译器编译的时候已经生成

  • 虚函数表存放在全局数据区中的只读数据段中

  • 虚函数表是存放虚数的地址的数组

二、虚函数表指针的创建时机

  • 类对象构造的时候,在构造函数,将虚函数表的地址赋值给对象 vptr

  • 如果类没有构造函数,则编译器为类生成默认构造函数,从而为类对象初始化 vptr

  • 继承下,虚函数表指针赋值过程

    调用基类构造函数的时候,先将基类的虚函数表地址赋值给 vptr

    接着调用子类构造函数的时候,又将子类的虚函数表地址赋值给 vptr


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs

相关推荐
2401_894915535 分钟前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
2501_9364156911 分钟前
可变参数&综合练习&斗地主游戏
java·windows·游戏
极客先躯1 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
xqqxqxxq2 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
wang09072 小时前
自己动手写一个spring之aop_1
java·后端·spring
颜x小2 小时前
[C#] C++与c#语法对比
开发语言·c++·c#
weixin_423652133 小时前
C#使用JObject
开发语言·c#
国科安芯3 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
deng12043 小时前
【Thread类的用法(1)-- Thread类的基本用法】
java·java-ee
suconnect4 小时前
Spring Boot接入企业RAG:文档切分、向量检索、权限过滤和答案溯源
java·spring boot·后端