Which function to call? (delegate to a sister class)
<p>I just read about this in the C++ FAQ Lite</p>

<p>[25.10] What does it mean to "delegate to a sister class" via virtual inheritance?</p>

<pre><code> class Base {
 public:
   virtual void foo() = 0;
   virtual void bar() = 0;
 };

 class Der1 : public virtual Base {
 public:
   virtual void foo();
 };

 void Der1::foo()
 { bar(); }

 class Der2 : public virtual Base {
 public:
   virtual void bar();
 };

 class Join : public Der1, public Der2 {
 public:
   ...
 };

 int main()
 {
   Join* p1 = new Join();
   Der1* p2 = p1;
   Base* p3 = p1;

   p1-&gt;foo();
   p2-&gt;foo();
   p3-&gt;foo();
 } 
</code></pre>

<p>"Believe it or not, when Der1::foo() calls this->bar(), it ends up calling Der2::bar(). Yes, that's right: a class that Der1 knows nothing about will supply the override of a virtual function invoked by Der1::foo(). This "cross delegation" can be a powerful technique for customizing the behavior of polymorphic classes. "</p>

<p>My question is:</p>

<ol>
<li><p>What is happening behind the scene.</p></li>
<li><p>If I add a Der3 (virtual inherited from Base), what will happen? (I dont have a compiler here, couldn't test it right now.)</p></li>
</ol>
