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

一、虚函数表的创建时机

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

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

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

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

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

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

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

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

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

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


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

相关推荐
XiYang-DING1 分钟前
【Java】哈希
java·哈希算法·散列表
ai旅人4 分钟前
Guava RateLimiter深度解析:非阻塞令牌桶限流原理与跑批实战
java·限流·guava
xiaotao1314 分钟前
阶段零:Python 安装与虚拟环境(venv / Conda)
开发语言·人工智能·python·conda
Seven976 分钟前
【从0到1构建一个ClaudeAgent】规划与协调-技能
java
dr_yingli8 分钟前
fMRI(4-1)统计分析报告生成器说明
开发语言·matlab
范什么特西12 分钟前
MyEclipse8.5配置
java·ide·myeclipse
想带你从多云到转晴13 分钟前
05、数据结构与算法---栈与队列
java·数据结构·算法
QuZero17 分钟前
ReentrantLock principle
java·算法
m0_7167652319 分钟前
数据结构--顺序表的插入、删除、查找详解
c语言·开发语言·数据结构·c++·学习·算法·visual studio
zjshuster20 分钟前
流程引擎(Process Engine)简介
java·数据库·servlet