dynamic_cast
不检查返回值时有什么用途NULL
吗?如果我正在查看一个代码库,并且它从返回值中省略了 null 检查,那么使用它是否也一样好static_cast
?
A *a = dynamic_cast<A *>(b);
foo(*a); //might as well have used a static_cast
我已经阅读了谷歌提供的关于此事的所有内容,似乎检查 null 是唯一的原因,但我还没有看到有人站出来说“没有 null 检查的 dynamic_cast 是浪费周期(和RTTI 代码可能会膨胀)。”
编辑:有人告诉我,如果类型之间存在虚拟继承,那么在没有的static_cast
地方dynamic_cast
就会失败。在我的情况下,情况并非如此。