在那种情况下对象是否被破坏了?
当我有一个函数时,让我们调用它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;
}
回答
您不能使用引用作为队列的元素。您也不能将引用用作任何其他标准容器的元素。因此,所示程序格式错误。
也就是说, obj1 是一个自动变量,因此它会在作用域结束时被销毁,在这种情况下是函数返回时。