假设我们有一个函数的形式:
const SomeObject& SomeScope::ReturnOurObject()
{
if( ! SomeCondition )
{
// return early
return ;
}
return ourObject;
}
显然上面的代码有一个问题,如果条件不成立,那么我们就有一个问题是如何从这个函数返回。 我的问题的关键是处理这种情况的最佳方法是什么?
最佳答案
这不是语法问题,而是设计问题。您必须指定当 SomeCondition
为真时 ReturnOurObject()
应该返回什么。这主要取决于函数的用途。而且你还没有告诉我们。
根据设计问题,我看到了一些可能的句法方法:
- 返回对其他对象的引用;你必须在某处放置一些人造元素
- 在某个地方有一个特殊的“no-object-to-return”对象,你可以返回一个引用;客户可以检查这一点;如果他们不检查他们会得到合理的默认行为
- 返回一个指针,而不是一个引用;客户必须始终检查函数的返回值
- 抛出异常;如果
SomeCondition
是客户无法处理的特殊情况 - 断言;如果
SomeCondition
应始终成立,则应断言
关于c++ - 从返回引用的函数提前返回的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755010/