У меня есть следующая иерархия
class A {
…
}
class B: public A{
…
}
class C: public B {
…
}
void foo()
{
auto* bar = dynamic_cast<C*> getPointerToInsanceOfA();
//use bar as if it were a pointer to object of derived class C.
}
Я пробовал это, это работает, как ожидалось.
Как насчет foo1?
void foo1()
{
Auto* bar1 = dynamic_cast<A*> getPointerToInsanceOfC();
//use bar1 as if it were a pointer to object of base class A .
}
Есть ли какие-либо подводные камни, связанные с сращиванием объектов или чем-то еще в обоих случаях.