title: a compiler generated default constructor in c++
body: <p>declaring a struct Table:</p>
  
  <pre><code>struct Tables {
         int i;
         int vi[10];
         Table t1;
         Table vt[10];
  };
  
  Tables tt;
  </code></pre>
  
  <p>assuming that a user-deault contructor is defined for Table.</p>
  
  <p>here tt.t1 will be initialized using the default contructor for Table, as well as each element in tt.vt.</p>
  
  <p>On the other hand tt.i and tt.vi are not initialized because those objects are not of a class type.</p>
  
  <p>so we remain with a semi-initialized object tt.</p>
  
  <p>if I understood well - if tt.i or tt.vi won't be explicitly initialized i the code, after creating tt, an error will be thrown if we try to read a value from them?</p>
  
  <p>2) can someone explain it to me, why cpp designers didn't want to simply initialize the built-in types int and int[] to zero?</p>