operator new not calling constructor
<p>Consider the belo code snippet:</p>

<pre><code>class Base
{
    public:
    Base()
    {
            cout&lt;&lt;"Constructor"&lt;&lt;endl;
    }
    Base(const Base&amp; rhs)
    {
            cout&lt;&lt;"Copy constructor"&lt;&lt;endl;
    }
    Base* Clone()
    {
            return new Base(*this); &lt;--------------- 2
    }
    void* operator new(size_t size)
    {
            void* p=malloc(size);
            cout&lt;&lt;"Inside new"&lt;&lt;endl;
            return p;
    }
};

int main()
{
    Base b1; &lt;------------ 1
    Base* ptr=b1.Clone();
    return 0;
}
</code></pre>

<p>I am getting the <a href="http://ideone.com/1oPTK" rel="nofollow">output</a> as:  </p>

<pre><code>Constructor
Inside new
Copy constructor  
</code></pre>

<p>I kept hearing that first operator new allocates a chunk of void type &amp; then new operator calls constructor to convert that chunk into the exact type as that on the LHS.<br>
So, why the constructor is not getting called for statement 2?</p>

<p>I also want to know the exact series of actions undertaken by the C++ compiler for the statement 2.</p>
