C++输出参数与返回值
In C++ Output Parameter vs Return Value
输出参数和返回值之间有什么区别? 我到处找过,似乎找不到一个简单的定义。
-
返回值是C++中明确定义的内容;例如,
return x;
中的x
是返回值,而函数声明中的int
是返回类型int myfunc()
。 -
输出参数的一致性未在C++中定义。但是,有人会将其解释为以下任一情况:
- 非
const
引用传递的函数参数,只要你在函数中实际修改它,否则为什么要叫它输出?在以下函数声明中x
了一个示例:void myfunc(int& x)
; - 通过(不一定是
const
(指向非const
的指针传递的函数参数,就像以下两个函数声明中的x
:void fun1(int * x)
和void fun2(int * const x)
;- 关于后一种情况,它允许将缺失的参数"编码"为
nullptr
默认值,如void fun3(int * x = nullptr)
。
- 关于后一种情况,它允许将缺失的参数"编码"为
- 非
第一个区别是美学:你最喜欢哪一个?
另一个是,前一个概念和语法可以帮助您传达函数返回值的消息,这在调用站点上也很清楚(而在调用站点,您可能不知道与参数对应的参数是否通过引用传递(。
函数在调用方站点产生"后果"的这两种方式之间存在一些差异。例如,您只能有一个返回值,而您可以拥有任意数量的参数。
在性能方面,编译器优化可以最大限度地减少性能差异,也许您(还(不必担心。
相关文章:
- 如何在另一个函数中使用返回值作为参数?
- C++输出参数与返回值
- 使用 Main() 返回值作为 python 脚本的参数
- 将参数的省略复制为返回值
- 如何将一个函数的返回值作为另一个函数的参数传递?
- 可以通过常量引用返回默认参数的值吗?
- 参数传递和返回值如何在程序集级别的 x86 上的 C/C++ 中工作?
- 将指向数组的指针作为函数参数传递,这本身就是另一个函数的返回值?
- 编写一个函数,该函数将通过判断其每个参数的类型来自动确定其返回值
- 有条件的操作员从其参数的副本中返回值
- 使用 "typename Container::value_type" 作为返回值时无法推断模板参数
- C++ ReSharper - 生成函数返回值/参数类型的变量
- ARM访问参数与返回值
- C++如何在模板中推断可调用对象的类型(参数列表和返回值)
- 用于指示返回值生存期的C++函数属性和参数相同
- 使用constexpr函数的返回值作为另一个函数的参数
- 是否有一种方法可以通过C 中的OUT参数接收Python中的返回值
- qsharedPointer作为方法参数或方法的返回值的良好实践
- 将函数返回值传递给引用参数会导致 GCC 中的编译错误
- 是指向在向函数返回值/参数和类请求传输数据期间复制的内存的指针