3

长期以来,我的直觉和实践一直是尽可能避免使用参数。我相信一个函数应该有一个逻辑目的,这通常意味着一种返回类型(不返回多个东西)。有时,返回多个东西是可取的(fe std::map::insert)。我知道这可以作为一对/元组或作为输出参数来完成;关于使用哪一个的论点对我来说不太重要。

首选输出参数或返回值的概念、设计或性能原因是什么?

4

2 回答 2

6

没错,out 参数并不是真正需要的,因为 RVO 使按值返回变得可行,即使是大型类型也是如此。必须返回多个东西要么是代码味道,要么可以明智地打包在一个结构中。

我会说唯一剩下的原因,这是一个大问题,就是一致性。如果该类已经有数十个通过参数返回的方法,请坚持使用它(除非您有权重构该死的东西:)。

于 2013-09-24T13:22:54.917 回答
0

根据上下文,第三种选择可能是传递回调。如果被调用函数“产生”多个值,则回调可能有多个方法。

尽管带有回调参数的函数并不真正符合“函数”的定义,但返回多个值的函数也不符合 IMO。

于 2013-09-24T13:52:58.690 回答