如何使用条件表达式返回对象指针?

How to return an object pointer with conditional expression?

本文关键字:对象 指针 返回 表达式 何使用 条件      更新时间:2023-10-16

根据 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,然后返回foo,如果它是一个nullptr返回nullptr,该怎么办。让我们暂时忘记有人可能想要删除该指针。

哪种方式是正确的?

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();
}

这是有效的,因为如果fooget持有nullptr,将返回nullptr