title: Why must C++ constructor use dynamic allocation for array?
body: <p>In my course notes these two examples are given. Apparently the first one is not allowed, is there a technical reason why I can't allocate on stack? Or is this the C++ standard? </p>
  
  <pre><code>   // Constructor may force dynamic allocation when initializating an array of objects.
  
     Complex ac[10];             // complex array initialized to 0.0
      for ( int i = 0; i &lt; 10; i += 1 ) {
           ac[i] = (Complex){ i, 2.0 } // disallowed
      }
  
  
      // MUST USE DYNAMIC ALLOCATION
      Complex *ap[10];            // array of complex pointers
      for ( int i = 0; i &lt; 10; i += 1 ) {
           ap[i] = new Complex( i, 2.0 ); // allowed
      }
  </code></pre>