已知下面的class层次,其中每一个class都定义有一个default constructor和一个virtual destructor。
class X {...};
class A {...};
class B : public A {...};
class C : public B{...};
class D : public X, public C {...};
下面()执行dynamic_cast会失败。
A *pa = new D; X *px =<br> dynamic_cast<X*>(pa)
D *pd = new D; A *pa = dynamic_cast<A*>(pd)
B *pb = new B; D *pd = dynamic_cast<D*>(pb)
A *pa = new C; C *pc = dynamic_cast<C*>(pa)