【发布时间】:2014-09-07 14:31:53
【问题描述】:
具体取这段代码
function myfunction(){
vector<T> foo,bar;
//..put some objects into foo via push_back
for(int i =0;i<foo.size;i++)
if(foo[i].hasCondition())
bar.push_back(foo[i]);
foo = vector<T>();
//do other stuff
}
那么 foo 或 bar 不包含的对象是否已被破坏?如果不是,那么仅破坏 foo 中 bar 未指向的对象的正确方法是什么?
【问题讨论】:
-
简短回答:是的。尽管在这种情况下
bar包含对象的副本,所以当它被销毁时,您将获得对析构函数的第二次调用。 -
这里使用的临时实例
foo = vector<T>();会在使用后销毁,是的。 -
不是复制单独的对象实例吗?所以 destruct 调用不是在两个不同的对象上吗?
-
@user2268997 是的,这就是我的意思。
标签: c++ constructor garbage-collection destructor