c++ - 从返回引用的函数提前返回的最佳方式

标签 c++ function pass-by-reference

假设我们有一个函数的形式:

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/

相关文章:

c - 如果两个库在 C 中具有相同的功能,如何使用它们?

php - 通过引用将变量传递给 PHP 扩展

Ruby 字符串通过引用函数参数传递

java - 在 .c 和 .cpp 文件 (JNI) 中声明的文件范围变量的生命周期是否有保证?

C++:在字符串中 move 语义#append

c++ - gmp 使用 mpz_pow 函数给出错误

javascript - 如何将一堆 jquery 命令存储在一个可以通过单击事件调用的函数中

c++ - 内联函数中的内联函数

javascript - 自执行匿名函数返回

json - powershell 通过引用传递