【发布时间】:2012-02-06 10:34:08
【问题描述】:
我希望这个问题是主题。
我在进行代码审查时偶然发现了以下功能:
bool SomeFunc(std::string& o_xxx, char& o_yyy);
该函数用于通过out参数获取某个类的xxx和yyy的值。
cmets(后来用于自动文档)说:
...这个函数通过引用返回[xxx]和[yyy]...
显然,该函数返回一个布尔值,指示成功或失败。所以上面那句话需要改写。但是怎么做?什么是正确的术语(如果有的话)通过输出参数返回某些东西,或者换句话说,填充通过引用传递的参数?
这个问题被标记为与语言无关,因为它不是 C++ 特定的。但它也被标记为 C++,因为该示例是用 C++ 编写的。
【问题讨论】:
-
我通常会说“函数返回一个指示成功或失败的值。如果成功,
o_xxx将具有 [xxx] 的值,o_yyy将具有值[yyy]。如果失败,参数不变。"。 -
有时会使用输出参数,因为要返回的参数不止一个。如果将它们组合成一个类,则可以只返回一个实例。有时输出参数用于提高效率。最后,你为什么要传递数据?封装:告诉,不要问!
-
@R.MartinhoFernandes:“在失败的情况下,参数不变” - 请注意,这是一个强有力的例外保证。因此,如果您这么说,请务必在分配给
o_yyy的函数之前 中分配给o_xxx,因为字符串分配可能会失败。或者使用交换。 -
@SteveJessop 哦,当然。或者,如果提供这样的保证并不容易,您可以只说“(...)参数将具有未指定的值”。
标签: c++ language-agnostic terminology out-parameters