【发布时间】:2021-10-04 06:52:33
【问题描述】:
当我有一个函数时,我们称它为foo()。在foo() 中,我创建了一个名为obj1 的对象,它是ClassA 的一种类型。另外,我将对象的引用复制到std::queue<ClassA&> qu。
我的问题是:对象obj1 在foo() 返回之前被销毁了吗?
代码示例:
class ClassA {...};
std::queue<ClassA&> qu;
void foo()
{
ClassA obj1;
qu.push_back(obj1);
}
int main()
{
foo();
return 0;
}
【问题讨论】:
-
请粘贴完整示例。这取决于。
-
@pptaszni:一个minimal reproducible example,就是这样。
-
如果它是本地的自动范围,那么是的(并且引用现在悬空且不可用,除非队列也超出范围)。请显示实际代码,因为如果您使用
new,答案会有所不同。 -
这不会编译,但如果编译了,obj1 会在超出范围时被销毁。在这种情况下,当函数返回时,它将超出范围。
标签: c++