文档目录

RTTI 与异常处理底层机制

目标:理解运行时类型识别和异常抛出的物理开销。

  • 4.1 dynamic_cast 底层原理

    • type_info 链与 vtable 中的 __si_class_type_info / __class_type_info 结构。
    • dynamic_cast<void*> 如何获取对象的起始地址。
    • 跨动态库边界 dynamic_cast 的限制与解决方案。
  • 4.2 typeid 运算符

    • typeid 返回的 std::type_info 对象的静态/动态绑定区别。
    • 对空指针解引用 typeid(*ptr) 的行为(抛出 std::bad_typeid)。
  • 4.3 异常抛出的物理成本

    • 为什么零成本异常模型(Zero-Cost Exception Handling)在没有异常抛出时无开销,但抛出时极慢?
    • setjmp/longjmp vs C++ try/catch 的底层差异。