title: Default initialization in C++
body: <p>I was asking myself something this morning, and I can't find the words to properly "google" for it:</p>
  
  <p>Lets say I have:</p>
  
  <pre><code>struct Foo
  {
    int bar;
  };
  
  struct Foo2
  {
     int bar;
     Foo2() {}
  };
  
  struct Foo3
  {
     int bar;
     Foo3() : bar(0) {}
  };
  </code></pre>
  
  <p>Now if I <em>default</em> instantiate <code>Foo</code>, <code>Foo2</code> and <code>Foo3</code>:</p>
  
  <pre><code>Foo foo;
  Foo2 foo2;
  Foo3 foo3;
  </code></pre>
  
  <p>In which case(s) is the <code>bar</code> member <strong>properly initialized</strong> ?</p>
  
  <p>(Well <code>Foo3</code> obviously explicitely initialize it and is only showed here to explicit the difference with <code>Foo2</code> so the question is mainly about the first two.)</p>
  
  <p>Thank you ! :)</p>