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

一、虚函数表的创建时机

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

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

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

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

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

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

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

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

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

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


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

相关推荐
外收内放3 分钟前
Python基础语法练习题(57-58)
开发语言·python
时间的拾荒人9 分钟前
Qt 界面美化实战:QSS 样式表
开发语言·qt·面试
Joy T32 分钟前
Spring AI 接入已有 Java 项目的三种架构设计
java·人工智能·springai·ai入门·chatclient·ai service·ai能力接入
chenbingjie_c37 分钟前
C++ STL 适配器:stack & queue,从 vector/list 到 deque 深度解析
数据结构·c++
杨运交38 分钟前
[076][核心模块]构建优雅的Java异常处理框架:从错误码到全局异常处理
java·开发语言
caoerzhong1 小时前
仓库数字化成熟度分级:JeeWMS 开源 Java 仓库管理系统如何支撑从可见到自治的四级跃迁
java·开源
可乐鸡翅yeah_1 小时前
video.js 集成 hls.js 开发 M3U8 播放器,新手高频踩坑
开发语言·前端·javascript·后端·ecmascript·m3u8·音视频在线播放
MayBaymax1 小时前
RocketMQ 存储机制
java·rocketmq
小鹿的周先生1 小时前
第11章-Structured-Output
开发语言·人工智能·python
程序猿_极客1 小时前
【免费】分享一套优质的基于SpringBoot的服装商城管理系统的设计与实现(带可视化图表、协同过滤功能),源码+文档+视频详解(讲解)
java·spring boot·后端·服装商城管理系统