在这段代码中:
void f(std::unique_ptr<int> q)
{
}
void g()
{
std::unique_ptr<int> p{new int{42}};
f(std::move(p));
}
在哪一行释放p?我觉得是在f函数退出时,因为它被使用std::move移动到那里,但我对这个答案不确定也不自信。
g
在任何地方转移了对p
的所有权。p
仍然是由g
作为自动变量“拥有”的。转移的是动态分配对象的所有权。 - Daniel Langr