假设我们有一个以下形式的函数:
const SomeObject& SomeScope::ReturnOurObject()
{
if( ! SomeCondition )
{
// return early
return ;
}
return ourObject;
}
显然上面的代码有一个问题,如果条件失败,那么我们就会遇到如何从该函数返回的问题。
我的问题的关键是处理这种情况的最佳方法是什么?
这不是语法问题,而是设计问题。你必须指定什么ReturnOurObject()
应该返回时SomeCondition
是真的。这主要取决于该功能的用途。而且你还没有告诉我们。
根据设计问题,我看到了一些可能的语法方法:
- 返回对其他对象的引用;你必须在某个地方有一些代用品
- 在您返回引用的地方有一个特殊的“无对象可返回”对象;客户可以检查这一点;如果他们不检查,他们会得到合理的默认行为
- 返回一个指针,而不是一个引用;客户端必须始终检查函数的返回值
- 抛出异常;如果
SomeCondition
是客户无法处理的特殊情况,这是适当的
- 断言;如果
SomeCondition
应该始终成立,应该断言
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)