dynamic_cast<无效*>什么时候有用?

When is dynamic_cast<void*> useful?

本文关键字:gt 什么时候 有用 无效 lt dynamic cast      更新时间:2023-10-16

5.2.7/7说了一些类似的话

如果CCD_ 1是"0";指向CCD_ 2的指针";,结果是指向CCD_ 3所指向的最派生类的指针。

这种语法的好应用是什么?dynamic_cast<void*>应在何时使用?

一个常见的原因是要弄清楚两个接口IA*IB*实际上是否是指向同一底层对象的指针。如果你需要的话,使用石膏。

IIRC,在具有重复非虚拟基的多重继承的情况下,甚至可以有两个IA*指针,它们比较不相等,但指向同一对象,因为它们指向两个不同的IA子对象。

当你有类似的东西时:

template<typename X, typename Y>
bool operator==(const X* px, const Y* py) {
     return dynamic_cast<void*>(px) == dynamic_cast<void*>(py);
}