文档目录
编译器对 C++ 面向对象(OOP)的底层翻译黑幕
目标:撕开语法糖,看清编译器是如何在内存里摆放你的类和函数的。
-
1.1 多态的物理本质:虚函数表(vtable)与虚表指针(vptr)
- 当一个类包含
virtual函数时,编译器为它增加了多少内存? - 面试高频:多重继承、虚继承下的内存布局和指针偏移。
- 性能损耗分析:为什么调用虚函数需要两次指针寻址?它是如何破坏 CPU 缓存(Cache Miss)和阻止编译器内联优化的?
- 当一个类包含
-
1.2 对象的物理裁剪:内存对齐(Memory Alignment)
- 编译器如何应用
alignof和offsetof规则? - 为什么改变结构体中变量的声明顺序,可以大幅缩减其物理内存占用?
- 编译器如何应用