C++ Tutorial/Class/virtual inheritance
Using virtual base classes
<source lang="cpp">#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;
}</source>
Derived2 Derived1 Derived2