title: Why doesn't new require a cast to the pointer even though malloc requires it?
body: <p>The definition of new in the &lt;new> header is:</p>
  
  <pre><code> void* operator new(size_t);
  </code></pre>
  
  <p>And the definition of malloc is as stated:</p>
  
  <pre><code> void* malloc(size_t);
  </code></pre>
  
  <p>Now, as C++ is a strongly typed language, it requires a cast from the programmer to convert a void* pointer to the type the programmer requires... In malloc, we have to perform a cast, but not in new, though both return a void* pointer. Why?</p>