Function C++

#include 
using namespace std;
class BaseClass {
public:
  virtual void myFunction()
  {
    cout << "Using BaseClass version of myFunction()\n";
  }
};
class DerivedClass1 : public BaseClass {
public:
  void myFunction() 
  {
    cout << "Using DerivedClass1's version of myFunction()\n";
  }
};
class DerivedClass2 : public DerivedClass1 {
public:
  void myFunction() 
  {
    cout << "Using DerivedClass2's version of myFunction()\n";
  }
};
int main()
{
  BaseClass *p;
  BaseClass ob;
  DerivedClass1 derivedObject1;
  DerivedClass2 derivedObject2;
  p = &ob;
  p->myFunction();                   // use BaseClass's myFunction()
  p = &derivedObject1;
  p->myFunction();                   // use DerivedClass1's myFunction()
  p = &derivedObject2;
  p->myFunction();                   // use DerivedClass2's myFunction()
  return 0;
}