这段代码就是我想要做的:
Tony& Movie::addTony()
{
Tony *newTony = new Tony;
std::unique_ptr<Tony> tony(newTony);
attachActor(std::move(tony));
return *newTony;
}
我想知道我是否可以这样做:
Tony& Movie::addTony()
{
std::unique_ptr<Tony> tony(new Tony);
attachActor(std::move(tony));
return *tony.get();
}
但会*tony.get()
是同一个指针还是空指针?我知道我可以验证,但是它要做的标准是什么?
不,你不能这样做。移动unique_ptr
将其归零。如果没有,那么它就不是唯一的。我当然假设attachActor
不做这样的傻事:
attachActor(std::unique_ptr<Tony>&&) {
// take the unique_ptr by r-value reference,
// and then don't move from it, leaving the
// original intact
}
第 20.8.1 节第 4 段。
此外,u(unique_ptr 对象)可以根据请求传输
另一个唯一指针 u2 的所有权。完成这样一个
转移,以下后置条件成立:
-- u2.p 等于传输前的 u.p,
--u.p 等于 nullptr, and
-- 如果传输前的 u.d 保持状态,则该状态已传输至 u2.d。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)