title: overriden virtual function is not getting called
body: <p>a more exact version of the code is:</p>
  
  <pre><code>class SomeParam;
  class IBase
  {
  public:
      virtual void Func(SomeParam* param = NULL)
      {
          cout &lt;&lt; "Base func";
      }
  };
  
  class DerivedA : public IBase
  {
  public:
      void Func()
      {
          //do some custom stuff
          cout &lt;&lt; "DerivedA func";
          IBase::Func();
      }
  };
  
  class DerivedB : public IBase
  {
  public:
      void Func()
      {
          //do some custom stuff
          cout &lt;&lt; "DerivedB func";
          IBase::Func();
      }
  };
  
  //at somewhere else
  void FuncCaller(IBase *instance1, IBase *instance2)
  {
      IBase *i1 = instance1;
      IBase *i2 = instance2;
      i1-&gt;Func();
      i2-&gt;Func();
  }
  
  DerivedA *a = new DerivedA;
  DerivedB *b = new DerivedB;
  FuncCaller(a,b);
  </code></pre>
  
  <p>This gives me:<br>
      "Base func"<br>
      "Base func"</p>