Virtual Inheritance in C++


#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";
      }
};

/* derived2 inherits virtual function vfunc()
from derived1. */

class derived2 : public derived1
{
      public:
// vfunc() is still virtual

            void vfunc()
            {
                  cout << "This is derived2's vfunc().\n";
            }
};

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(); // access derived2's vfunc()
      getch();
      return 0;
}
Custom Search