Using virtual base classes : virtual inheritance « Class « C++ Tutorial






#include <iostream>
using std::cout;
using std::endl;

class Base
{
public:
   virtual void print() const = 0; // pure virtual
};
class Derived1 : virtual public Base
{
public:
   void print() const
   {
      cout << "Derived1\n";
   }
};

class Derived2 : virtual public Base
{
public:
   void print() const
   {
      cout << "Derived2\n";
   }
};

class Multiple : public Derived1, public Derived2
{
public:
   void print() const
   {
      Derived2::print();
   }
};

int main()
{
   Multiple both;
   Derived1 one;
   Derived2 two;

   Base *array[ 3 ];
   array[ 0 ] = &both;
   array[ 1 ] = &one;
   array[ 2 ] = &two;

   for ( int i = 0; i < 3; i++ )
      array[ i ]->print();

   return 0;
}
Derived2
Derived1
Derived2








9.30.virtual inheritance
9.30.1.Using virtual base classes