<分区>
谁能给我解释一下 dynamic_cast
的内部工作原理? Virtual Pointer 在其中的作用是什么?
标签 c++ rtti dynamic-cast
<分区>
谁能给我解释一下 dynamic_cast
的内部工作原理? Virtual Pointer 在其中的作用是什么?
最佳答案
形式上,当然,它是实现定义的,但在
实践中,vtable中会有一个额外的指针,
它指向对象的描述,可能是 DAG
包含指向各种 child 的指针的对象
(派生类)和有关它们类型的信息(a
指向 type_info
的指针,也许)。
然后编译器生成走不同路径的代码 在图表中,直到它找到目标类型,或者 访问了所有的节点。如果找到目标类型,则 节点还将包含有关如何执行的必要信息 转换指针。
编辑:
我想到了另外一点。即使生成的代码 找到匹配项,它可能必须继续导航才能 确保它没有歧义。
关于c++ - dynamic_cast 在内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798214/