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

一、虚函数表的创建时机

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

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

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

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

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

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

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

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

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

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


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

相关推荐
Grey Zeng20 小时前
Java SE 25新增特性
java·jdk·jdk新特性·jdk25
感哥21 小时前
C++ 多态
c++
雨白21 小时前
Java 线程通信基础:interrupt、wait 和 notifyAll 详解
android·java
架构师沉默1 天前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群1 天前
重要:Java25正式发布(长期支持版)!
java·后端·面试
沐怡旸1 天前
【底层机制】std::string 解决的痛点?是什么?怎么实现的?怎么正确用?
c++·面试
每天进步一点_JL1 天前
JVM 类加载:双亲委派机制
java·后端
用户298698530141 天前
Java HTML 转 Word 完整指南
java·后端
渣哥1 天前
原来公平锁和非公平锁差别这么大
java
渣哥1 天前
99% 的人没搞懂:Semaphore 到底是干啥的?
java