4
什么会使C ++ RTTI不受欢迎?
在查看LLVM文档时,他们提到他们使用“ RTTI的自定义形式”,这就是他们拥有isa<>,cast<>和dyn_cast<>模板功能。 通常,读到库重新实现某种语言的某些基本功能后,这会产生可怕的代码味道,并且会被邀请运行。但是,这就是我们所说的LLVM:这些家伙正在研究C ++编译器和C ++运行时。如果他们不知道自己在做什么,那我就很困惑,因为我更喜欢Mac OS附带clang的gcc版本。 尽管如此,由于经验不足,我仍然想知道普通RTTI的陷阱是什么。我知道它仅适用于具有v表的类型,但这仅引发两个问题: 由于您只需要一个虚拟方法来拥有一个vtable,为什么他们不只是将一个方法标记为virtual?虚拟析构函数似乎擅长于此。 如果他们的解决方案不使用常规的RTTI,是否知道如何实现?