参数是否过时
Are out-parameters out-dated?
长期以来,我的直觉和实践一直是尽可能避免使用参数。我相信一个函数应该有一个逻辑目的,这通常意味着一种返回类型(不返回多个东西)。有时,返回多个内容是可取的(例如 std::map::insert)。我知道这可以作为对/元组或输出参数完成;使用其中哪一个的争论对我来说不太重要。
首选输出参数或返回值的概念、设计或性能原因是什么?
你是对的,out 参数并不是真正需要的,因为 RVO 使得按值返回变得可行,即使对于大型类型也是如此。必须返回多个东西要么是一种代码气味,要么可以合理地打包在一个结构中。
我想说,唯一剩下的原因,这是一个大问题,是一致性。如果该类已经有数十个按参数返回的方法,请坚持使用它(除非您:)可以自由重构的东西。
根据上下文,第三种选择可能是传递回调。如果被调用的函数"生成"多个值,则回调可能有多个方法。
虽然接受回调参数的函数并不真正符合"函数"的定义,但返回多个值的函数 IMO 也不符合。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 移动构造函数是否C++过时?
- decltype(auto) 是否使尾随返回类型过时?
- 检查动态链接库是否已过时
- 自lambdas进入C++以来,“回调”接口是否已过时
- 我是否仍然需要多线程或它已经过时了
- TBB 链接器错误 如何判断我是否缺少包含或代码是否已过时
- 参数是否过时
- 文章泛型<Programming>类型化缓冲区在 C++ 11 中是否完全过时?
- 易失性但不受限制的读取是否会无限期地产生过时的值?(在真正的硬件上)
- 新的C++11模板方法是否会使以前的C++98/03 push_back/insert方法过时