
// Program to illustrate dynamic_cast operator
#include<iostream.h>
class base
{
     public:
     virtual void func()
     {
               cout<<"\n class base::func()";
     }
};
class derived:public base
{
     public:
     void func()
     {
     cout<<"\n class derived::func()";
     }
};
void main()
{
     base bobj;
     base *bptr;
     derived dobj;
     derived *dptr;
     bptr=dynamic_cast <base *> (&dobj);
     if(bptr)
     {
          cout<<"\n Cast is from derived * to base *";
          bptr->func();
     }
     else
          cout<<"\n Invalid operation";
}
Test data
Cast is from derived * to base *
class derived::func()