我有一個函數返回一個本地對象:爲什麼我的本地對象摧毀了兩次?
class AT
{
public:
AT() { cout<<"construct"<<endl; }
AT(const AT& at) { cout<<"copy"<<endl; }
~AT() { cout<<"destroy"<<endl; }
};
AT funcAt()
{
AT tmp;
return tmp;
}
...
funcAt();
輸出爲:
construct
copy
destroy
destroy
我想有隻建設和「TMP」的破壞,所以爲什麼會出現複製和其他破壞?複製的對象在哪裏?
沒有C++對象可以銷燬(或創建)兩次。 – 2011-05-20 17:03:33
如果在啓用優化的情況下運行發佈版本,我將保證輸出更改。 – ildjarn 2011-05-20 17:24:25
@尼爾:我敢打賭,我可以創建和銷燬同一個對象兩次。 (作者:迂腐的警察) – 2011-05-20 17:37:03