class X { ... };
class A { ... };
class B : public A { ... };
class C : public B { ... };
class D : public X, public C { ... };
则下列哪些dynamic_cast 会失败
(a) D *pd = new D;
A *pa = dynamic_cast < A* > ( pd );
(b) A *pa = new C;
C *pc = dynamic_cast < C* > ( pa );
(c) B *pb = new B;
D *pd = dynamic_cast < D* > ( pb );
(d) A *pa = new D;
X *px = dynamic_cast < X* > ( pa );
答案是C错,有谁可以解释一下吗?
class A { ... };
class B : public A { ... };
class C : public B { ... };
class D : public X, public C { ... };
则下列哪些dynamic_cast 会失败
(a) D *pd = new D;
A *pa = dynamic_cast < A* > ( pd );
(b) A *pa = new C;
C *pc = dynamic_cast < C* > ( pa );
(c) B *pb = new B;
D *pd = dynamic_cast < D* > ( pb );
(d) A *pa = new D;
X *px = dynamic_cast < X* > ( pa );
答案是C错,有谁可以解释一下吗?