Let's assume there is such class hierarchy:
class A //base class
class B //interface
class C : public A, public B
Then C object is created:
A *object = new C();
Is it possible to cast object to B ?
Important: I assume I don't know that object is C. I just know that it implements interface B
No. This is not possible (direct casting from A*
to B*
).
Because the address of A
and B
are at different locations in class C
. So the cast will be always unsafe and possibly you might land up in unexpected behavior. Demo.
The casting should always go through class C
. e.g.
A* pa = new C();
B* pb = static_cast<C*>(pa);
^^^^ go through class C