title: multi level inheritance constructor execution
body: <pre><code>class A {
  public:
      A(int) {
          cout &lt;&lt; "Base class" &lt;&lt; endl;
      }
  };
  
  class B : virtual public A {
  public:
      virtual void do_something() = 0;
  };
  
  class C : public B {
  public:
      C()
          : A(1) {
          cout &lt;&lt; "C class" &lt;&lt; endl;
      }
  
      virtual void do_something() {
      }
  };
  </code></pre>
  
  <p>Compiler Error: when object for C is created, compiler is resulting error like </p>
  
  <blockquote>
    <p>error: no matching function for call to ‘A::A()’ </p>
  </blockquote>
  
  <p>why compiler expects default constructor of class A?</p>