我有一个函数返回一个本地对象:为什么我的本地对象摧毁了两次?
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