Listing 1 Using the dynamic_cast operator

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