#include <iostream.h>
#include <conio.h>
class base 
{
      public:
      virtual void vfunc() 
      {
            cout << "This is
base's vfunc().\n";
      }
};
class derived1 :
public base 
{
public:
void vfunc() 
      {
            cout << "This is
derived1's vfunc().\n";
      }
};
class derived2 :
public base 
{
      public:
      // vfunc() not overridden by
derived2, base's is used
};
int main()
{
      clrscr();
      base *p, b;
      derived1 d1;
      derived2 d2;
      // point to base
      p = &b;
      p->vfunc(); // access base's
vfunc()
      // point to derived1
      p = &d1;
      p->vfunc(); // access derived1's
vfunc()
      // point to derived2
      p = &d2;
      p->vfunc(); // use base's vfunc()
      getch();
      return 0;
}
