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

一、虚函数表的创建时机

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

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

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

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

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

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

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

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

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

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


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

相关推荐
gpfyyds6661 分钟前
Python代码练习
开发语言·python
盐真卿16 分钟前
python第八部分:高级特性(二)
java·开发语言
茉莉玫瑰花茶19 分钟前
C++ 17 详细特性解析(5)
开发语言·c++·算法
上海合宙LuatOS21 分钟前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
lly20240626 分钟前
《堆的 shift down》
开发语言
汤姆yu26 分钟前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
TT哇29 分钟前
【实习】银行经理端线下领取扫码功能实现方案
java
野犬寒鸦30 分钟前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
cpp_250131 分钟前
P10570 [JRKSJ R8] 网球
数据结构·c++·算法·题解
cpp_250138 分钟前
P8377 [PFOI Round1] 暴龙的火锅
数据结构·c++·算法·题解·洛谷