title: Does the `new` operator always call the constructor?
body: <p>My question is influenced by Prof. Thomas Cormen's <em>second comment</em> on his <a href="http://qr.ae/TUT5EX" rel="nofollow noreferrer">Quora answer</a><sup>$</sup>.</p>
  <p>He says that the constructor carries out the following three tasks:</p>
  <blockquote>
  <ol>
  <li><p>Allocates memory for the object.</p>
  </li>
  <li><p>Initializes the instance variables of the object, e.g., by implicitly calling <strong>init</strong> in Python. (I also emphasize that the <strong>init</strong> method should initialize not some, but all of the instance variables.)</p>
  </li>
  <li><p>Returns a reference to (i.e., address of) the object.</p>
  </li>
  </ol>
  </blockquote>
  <p>However, the <a href="https://msdn.microsoft.com/en-us/library/kewsb8ba.aspx" rel="nofollow noreferrer">MSDN documentation</a> for C++<sup>*</sup> says that it is the <code>new</code> operator that does that:</p>
  <blockquote>
  <p>Allocates memory for an object or array of objects of type-name from the free store and returns a suitably typed, nonzero pointer to the object.</p>
  </blockquote>
  <p>My question is, who is right?  Or, is there something more to it, perhaps like the <code>new</code> operator always calls the constructor, as suggested by a comment on the post?</p>
  <p>Thanks.</p>
  <p><sup>$ Unfortunately, Quora does not have the option to copy the link for a comment - I can only do so for the answer.</sup><br>
  <sup>* Although I say C++, I think it is also true for other languages like Java and C# (I am not 100% sure though).</sup></p>