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

一、虚函数表的创建时机

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

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

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

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

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

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

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

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

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

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


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

相关推荐
ps酷教程14 小时前
Jackson 解决没有无参构造函数的反序列化问题
java
NiceCloud喜云14 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
cjhbachelor15 小时前
c++继承
c++
AI玫瑰助手15 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
油炸自行车15 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
肩上风骋15 小时前
C++14特性
开发语言·c++·c++14特性
_日拱一卒15 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先
隔窗听雨眠15 小时前
Nginx网关响应慢排查手记
java·服务器·nginx
智慧物业老杨16 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
源码宝16 小时前
MES系统源码:Java8 + SpringBoot2.7 + MySQL8 + Redis,后端源码清爽易扩展
java·后端·源码·springboot·mes系统·源码二开·mes源码