0x4*_*2D2 24 c++ dynamic-cast casting void-pointers c++11
5.2.7/7说的内容如下:
如果
T
是"指向cv void
",则结果是指向由其指向的派生类最多的指针x
.
这个synatx有什么好的应用?什么时候应该dynamic_cast<void*>
使用?
MSa*_*ers 26
一个常见原因是要弄清楚是否两个接口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);
}
Run Code Online (Sandbox Code Playgroud)