在尽可能的情况下,我的直觉和长期实践是避免使用输出参数。我认为一个函数应该有一个逻辑目的,并且通常只有一个返回类型(不返回多个内容)。有时候,返回多个内容是可取的(例如std::map::insert)。我知道这可以作为一对/元组或输出参数来完成;对于我来说,使用哪种方式的争论并不重要。
有哪些概念、设计或性能上的原因,使得输出参数或返回值更受欢迎呢?
在尽可能的情况下,我的直觉和长期实践是避免使用输出参数。我认为一个函数应该有一个逻辑目的,并且通常只有一个返回类型(不返回多个内容)。有时候,返回多个内容是可取的(例如std::map::insert)。我知道这可以作为一对/元组或输出参数来完成;对于我来说,使用哪种方式的争论并不重要。
有哪些概念、设计或性能上的原因,使得输出参数或返回值更受欢迎呢?
你说得对,出参并不是真正需要的,因为RVO使得返回值变得可行,即使是对于大型类型也是如此。有必要返回多个值时,要么是代码异味,要么可以合理地打包成一个结构体。
我认为仅剩下的原因就是一致性,而这是一个重要的原因。如果类已经有数十个通过参数返回的方法,那就保持这种方式(除非你有自由重构它 :))。
根据上下文,第三种选择可能是传递回调函数。如果被调用的函数“产生”多个值,则回调函数可能具有多个方法。
虽然接受回调参数的函数并不真正符合“函数”的定义,但返回多个值的函数也不符合,我认为。
*
前面或后面放置空格的位置。类似这个问题的最佳实践应该有明确的理由来证明它们,并且应该被合理的人所认可。无论如何,这是我的看法... - David