C++多态与虚函数原理深度解析

📚 共计 30 章节
01
多态基础
什么是多态 · 静态/动态多态 · 为什么需要多态 · 核心地位
概念分类
02
静态多态
函数重载 · 运算符重载 · 模板 · 优缺点
重载模板
03
动态多态入门
虚函数概念 · virtual · 与普通函数区别 · 运行时多态
虚函数virtual
04
虚函数表 (vtable) 原理
内存布局 · vptr · 对象内存位置 · 单继承结构
vtablevptr
05
虚函数调用机制
vptr/vtable调用流程 · 动态绑定 · 开销分析
调用性能
06
构造函数与虚函数
构造函数中调用虚函数 · 为何不能是虚 · 析构关系
构造陷阱
07
析构函数与虚析构
基类虚析构 · 内存泄漏 · 底层实现
virtualRAII
08
纯虚函数与抽象类
纯虚定义 · 抽象类 · 接口设计 · vtable表现
抽象接口
09
多继承下的虚函数
多继承内存布局 · 多个vptr · 菱形继承
多继承菱形
10
虚继承与虚函数
虚继承内存 · vbptr · vbtable · vtable变化
虚继承vbptr
11
RTTI 与 typeid
运行时类型识别 · typeid · dynamic_cast · type_info
RTTItypeid
12
dynamic_cast 深度解析
用法 · 指针/引用 · 向下/交叉转型 · 性能
dynamic_cast转型
13
虚函数与性能
性能开销 · 分支预测 · 内联虚函数 · 优化建议
性能优化
14
虚函数与缓存
CPU缓存影响 · vtable局部性 · 缓存缺失 · 策略
缓存局部性
15
C++11/14 对多态的增强
override · final · =default/=delete · noexcept
C++11override
16
C++17/20 对多态的增强
std::variant · std::any · std::function · concepts
C++17concepts
17
虚函数与设计模式
工厂模式 · 策略模式 · 观察者 · 模板方法
设计模式多态
18
虚函数与异常安全
异常处理 · 异常规格 · 析构异常 · RAII
异常安全
19
虚函数与多线程
多线程调用 · vtable线程安全 · 线程局部存储
多线程安全
20
虚函数与内存管理
智能指针 · shared_ptr · unique_ptr · 自定义删除器
智能指针RAII
21
虚函数与序列化
多态序列化挑战 · 对象持久化 · 工厂反序列化
序列化持久化
22
虚函数与反射
C++缺乏反射 · 虚函数模拟反射 · 运行时类型信息
反射模拟
23
虚函数与插件系统
动态库虚函数 · 跨模块调用 · ABI · 插件接口
插件ABI
24
虚函数与嵌入式系统
嵌入式开销 · 内存限制 · 替代方案(函数指针/switch)
嵌入式替代
25
虚函数与游戏开发
游戏引擎多态 · 组件模式 · ECS对比 · 优化
游戏ECS
26
虚函数与编译器实现
GCC/Clang/MSVC布局 · Itanium ABI · COM模型
编译器ABI
27
虚函数与调试
调试技巧 · 查看vtable · 内存布局可视化 · bug排查
调试可视化
28
虚函数与安全
vtable劫持 · 指针覆写 · CFI · VTGuard
安全CFI
29
替代方案对比
函数指针 · std::function · CRTP · std::variant
CRTPvariant
30
综合实战:插件系统
虚函数 · 抽象类 · 工厂 · 智能指针 · 动态库加载
实战插件