如何 return 带有条件表达式的对象指针?

How to return an object pointer with conditional expression?

根据https://www.youtube.com/watch?v=LFv7XwgsdLY&t=1620s 25:40

class Foo 应该通过两种方式返回:

if(condition) 
   return foo1 
else 
    return foo2;
return condition ? food(foo1) : std::move(foo2);

如果 Foo 是一个 unique_ptr 并且我想检查 Foo 是否不是 nullptr 然后 return foo 并且它是否是一个 nullptr returnnullptr。让我们暂时忘记有人可能想要删除该指针。

哪种方式合适?

Foo* getFoo()
{
    //get because foo is a unique ptr
    return foo ? foo.get() : nullptr;
}
Foo* getFoo()
{
    return foo ? std::move(foo.get()) : nullptr;
}

您不需要任何类型的分支。你可以只使用

Foo* getFoo()
{
    return foo.get();
}

这是有效的,因为 get 将 return nullptr 如果 foo 持有 nullptr