5.2.7 / 7说的是:
如果
T
是"指向cv void
"的指针,则结果是指向x
指向的派生程度最高的类的指针。
这个synatx有什么好的应用?应该何时使用dynamic_cast<void*>
?
答案 0 :(得分:26)
一个常见的原因是弄清楚两个接口IA*
和IB*
实际上是指向同一个底层对象的指针。如果需要,请使用演员。
IA*
指针,这些指针比较不相等,但指向同一个对象 - 因为它们指向两个不同的IA
个子对象。
答案 1 :(得分:5)
当你有类似的东西时:
template<typename X, typename Y>
bool operator==(const X* px, const Y* py) {
return dynamic_cast<void*>(px) == dynamic_cast<void*>(py);
}