这段代码是我想要做的:
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()
会是同一个指针还是空?我知道我可以验证,但它的标准做法是什么?
原文由 user3496846 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,你不能这样做。移动
unique_ptr
使其归零。如果没有,那么它就不是独一无二的。我当然假设attachActor
不会做这样愚蠢的事情:第 20.8.1 节第 4 段。