<code>#include <iostream></code>
<code>#include <cstdlib></code>
<code>using</code> <code>namespace</code> <code>std;</code>
<code>class</code> <code>A{</code>
<code>public</code><code>:</code>
<code> </code><code>A(</code><code>void</code><code>){</code>
<code> </code><code>cout << </code><code>"A::A()"</code> <code><< endl;</code>
<code> </code><code>}</code>
<code> </code><code>~A(</code><code>void</code><code>){</code>
<code> </code><code>cout << </code><code>"A::~A()"</code> <code><< endl;</code>
<code> </code><code>static</code> <code>void</code><code>* operator </code><code>new</code><code>(</code><code>size_t</code> <code>size){</code>
<code> </code><code>cout << </code><code>"A::new"</code> <code><< endl;</code>
<code> </code><code>void</code><code>* pv = </code><code>malloc</code><code>(size);</code>
<code> </code><code>return</code> <code>pv;</code>
<code> </code><code>static</code> <code>void</code> <code>operator </code><code>delete</code><code>(</code><code>void</code><code>* pv) {</code>
<code> </code><code>cout << </code><code>"A::delete"</code> <code><< endl;</code>
<code> </code><code>free</code><code>(pv);</code>
<code>};</code>
<code>int</code> <code>main(</code><code>void</code><code>){</code>
<code> </code><code>A* pa = </code><code>new</code> <code>A;</code>
<code> </code><code>delete</code> <code>pa;</code>
<code> </code><code>return</code> <code>0;</code>
<code>}</code>
结果为:
A::new
A::A()
A::~A()
A::delete
由此我们可以知道,new 对象时,先new在调用其构造,
delete对象的时,先调用其析构,再delete
本文转自神ge 51CTO博客,原文链接:http://blog.51cto.com/12218412/1866959