文档目录

编译器对 C++ 面向对象(OOP)的底层翻译黑幕

目标:撕开语法糖,看清编译器是如何在内存里摆放你的类和函数的。

  • 1.1 多态的物理本质:虚函数表(vtable)与虚表指针(vptr)

    • 当一个类包含 virtual 函数时,编译器为它增加了多少内存?
    • 面试高频:多重继承、虚继承下的内存布局和指针偏移。
    • 性能损耗分析:为什么调用虚函数需要两次指针寻址?它是如何破坏 CPU 缓存(Cache Miss)和阻止编译器内联优化的?
  • 1.2 对象的物理裁剪:内存对齐(Memory Alignment)

    • 编译器如何应用 alignof 和 offsetof 规则?
    • 为什么改变结构体中变量的声明顺序,可以大幅缩减其物理内存占用?