gpt4 book ai didi

c++ - LLVM 是避免动态转换规则的异常(exception)吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:34 25 4
gpt4 key购买 nike

LLVM 有自己的 RTTI 替代方案,它比内置 RTTI 的速度有所提高,并允许动态转换为没有 vtable 的类 (dyn_cast)。但是,它仍然可以完全按照 dynamic_cast<> 的方式使用。尽管它确实允许它与更多类一起使用,但已被使用。

dyn_cast<> template documentation

LLVM 是一个享有盛誉的 C++ 项目,所以这似乎与俗语背道而驰,即过多的动态转换是糟糕设计的标志,也称为代码异味。当然,与标准 dynamic_cast 相比,性能更好的动态转换并不能改善其在设计中的使用。 .那么谁在这里?在 C++ 代码中是否存在大规模使用动态转换是一个好的设计选择的情况? Google 在 LLVM 主干源代码中发现了 690 次这种动态转换。

Uses of dyn_cast<> in LLVM trunk

最佳答案

虽然性能下降是避免的原因 dynamic_cast<>对于大型类层次结构,这并不是您想要避免使用它们的唯一原因。性能好与坏,不应该更鼓励使用 dyn_cast<>因为这个说法。

另一方面,使用 dynamic_cast<> 绝对没有错当它是完成工作的最佳工具时。如果它的使用是合理的,并且是解决问题的最干净的方法,那么无论“俗语”如何,它总是正确的。

我当然不会仅仅因为他们使用 dynamic_cast<> 就避开流行项目。小号,goto s 或任何其他失宠的成语。

关于c++ - LLVM 是避免动态转换规则的异常(exception)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1610875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com