class B { ... }; class D : public B { ... }; void f() { B *pb = new D; ... D *pd = dynamic_cast<D *>(pb); // a downcast ... pb = dynamic_cast<B *>(pd); // a "normal" upcast } // End of File