在C++中,
然而,还可以执行
T q = dynamic_cast<T>(p)
这种写法对指针p
进行运行时转换,将其转换为指向另一个指针类型T
,而T
必须位于*p
的动态类型的继承层次结构中才能成功。这样做通常都是可以的。然而,还可以执行
dynamic_cast<void*>(p)
,它将简单地返回一个指向"最派生对象"(参见C++11中的5.2.7::7)的指针。我知道这个特性可能是在实现动态转换时免费提供的,但它在实践中有用吗?毕竟,它的返回类型最多为void*
,那么这有什么好处呢?
p
也会这样...是否存在这样的情况,即p1 == p2
,但dynamic_cast<void*>(p1)!= dynamic_cast<void*>(p2)
? - Kerrek SBp1 != p2
,但实际上它们指向相同的对象。我想如果我们有一个以void *
为键的索引,那就有意义了。(不过void
指针本身将无法使用。) - Kerrek SB