Function C++

#include 
#include 
using namespace std;
class BaseClass {
public:
  int i;
  BaseClass(int x) { 
     i = x; 
  }
  virtual void myFunction()
  {
    cout << "Using BaseClass version of myFunction(): ";
    cout << i << '\n';
  }
};
class DerivedClass1 : public BaseClass {
public:
  DerivedClass1(int x) : BaseClass(x) {}
  void myFunction() 
  {
    cout << "Using DerivedClass1's version of myFunction(): ";
    cout << i*i << '\n';
  }
};
class DerivedClass2 : public BaseClass {
public:
  DerivedClass2(int x) : BaseClass(x) {}
  void myFunction() 
  {
    cout << "Using DerivedClass2's version of myFunction(): ";
    cout << i+i << '\n';
  }
};
int main()
{
  BaseClass *p;
  DerivedClass1 derivedObject1(10);   
  DerivedClass2 derivedObject2(10); 
  int i, j;
  for(i = 0; i <10; i++) {
    j = rand();
    if( ( j % 2 ) ) 
       p = &derivedObject1; 
    else 
       p = &derivedObject2; 
    p->myFunction();                      // call appropriate function
  }
  return 0;
}