Development C++

#include 
#include 
using namespace std;
class Base {
public:
  virtual void f() {} 
};
class Derived : public Base {
public:
  void derivedOnly() {
    cout << "Is a Derived Object.\n";
  }
};
int main()
{
  Base *bp, baseObject;
  Derived *dp, d_ob;
  //////////////////////////////////////////////////////// use typeid
  bp = &baseObject;
  if(typeid(*bp) == typeid(Derived)) {
    dp = (Derived *) bp;
    dp->derivedOnly();
  }
  else 
    cout << "Cast from Base to Derived failed.\n";
  bp = &d_ob;
  if(typeid(*bp) == typeid(Derived)) {
    dp = (Derived *) bp;
    dp->derivedOnly();
  }
  else
    cout << "Error, cast should work!\n";
  /////////////////////////////////////////////////////// use dynamic_cast
  bp = &baseObject;
  dp = dynamic_cast (bp);
  if(dp) 
     dp->derivedOnly();
  else 
     cout << "Cast from Base to Derived failed.\n";
  bp = &d_ob; 
  dp = dynamic_cast (bp);
  if(dp) {
     dp->derivedOnly();
  }else
    cout << "Error, cast should work!\n";
  return 0;
}