在我正在处理的代码库中,我经常遇到 dyn_cast。它是否与 dynamic_cast 相同,还是有所不同?我进行了一些搜索,但没有找到太多信息。
dyn_cast
是 LLVM API 中的一部分(在谷歌搜索中排名第一、第二、第三等位置),它与 dynamic_cast 一样工作,但是一个区别是该类不需要像 dynamic_cast 那样具有虚表。请参阅手册获取更多信息。
llvm::dyn_cast_or_null
相当于 dynamic_cast
。如果传递了空指针,这些函数将产生空指针,而 llvm::dyn_cast
则会退出。llvm::dyn_cast_or_null
还是llvm::dyn_cast
,如果值不符合所需类型,则都会返回null。它们之间的区别在于是否接受null作为参数。 - Emounllvm::dyn_cast_or_null
可以像dynamic_cast
一样接受空指针作为参数的好处,这是一个很好的观点。然而,不需要类具有虚表的观点仍然成立。因此,llvm::dyn_cast_or_null
和dynamic_cast
并不等价。 - Hari
dyn_cast<T>()
是来自LLVM的运算符,与标准的C++dynamic_cast<T>
运算符行为相似。 - wkl