can anyone give me an example of dynamic type checking...how do we do tht

#include <cstdlib>
#include <iostream>

class Base {
};

class Derived : public Base {};

using namespace std;
int main(void)
{
   Derived* pd = new Derived;
   Base* pb = pd;
   cout << typeid( pb ).name() << endl;   //prints "class Base *"
   cout << typeid( *pb ).name() << endl;   //prints "class Derived"
   cout << typeid( pd ).name() << endl;   //prints "class Derived *"
   cout << typeid( *pd ).name() << endl;   //prints "class Derived"
   
   delete pd;
   
   return EXIT_SUCCESS;
}