【问题标题】:What are IN, OUT and IN/OUT Parameters Modes in C++什么是 C++ 中的 IN、OUT 和 IN/OUT 参数模式
【发布时间】:2020-12-20 06:02:03
【问题描述】:
  • 什么是 IN(传入参数)?
  • 什么是 OUT(输出参数)?

...等等。

正在浏览 Stack Overflow 并发现类似的问题 这。后来被作者删了。没有可搜索的 网上有关这方面的信息。找到一个小帖子阅读并尝试 去理解。这个问答是从那个帖子和帮助中理解的 其他可能遇到此主题的人。这里的目的是整理 一些对后代更重要的观点。

【问题讨论】:

  • 这些术语是从哪里来的?我用谷歌搜索了Incoming ParameterOutgoing Parameter,但没有任何用处。您提到的术语似乎很少使用。
  • 我从堆栈溢出时提出的问题中读到这一点。刚刚得知它被称为INOUTIN|OUT。 @LouisGo
  • @LouisGo […]The term parameter (sometimes called formal parameter) is often used to refer to the variable as found in the function definition, while argument (sometimes called actual parameter) refers to the actual input supplied at function call.[…] 引用来自维基百科,但也与其他来源相匹配。
  • @LouisGo 是的,我想是的。传入=输入和传出=输出。两者都描述了数据流。
  • 您不应将多个问题混为一谈。 How are they different from Actual and Formal parameters?Incoming/Outgoing Parameter 组合没有多大意义,因为 Actual/Formal 只是 argument/parameter 的另一个名称,与传入或传出无关。

标签: c++ parameters arguments parameter-passing


【解决方案1】:

这些术语用于定义函数对传递的变量执行何种操作。读、写或读/写。这种表示法用于库的文档中,以确保调用者为函数提供适当的变量类型,以便适当地执行而不是意外地阻碍输出或操作。

IN、OUT 和 IN/OUT 不是 C++ 关键字,在文档中使用此模式只是为了指示哪种类型的参数最适合传递。

IN(传入参数):

表示接口只会读取值。如果参数是按值传递的,则可以不将变量作为 const 传递,因为函数将有一个局部变量来执行操作。为避免复制,最好通过引用传递,因此建议使用 const 来防止任何更改。

OUT(输出参数):

当参数标记为out时,表示该函数不需要读取值,参数值不重要。实际上,需要标记的参数才能输出多个值。此类参数需要是指针、引用和结构。

输入/输出

当参数模式为IN/OUT时,表示函数需要参数中传入的值,读取该值,然后修改。函数需要输入值和输出值。

为什么需要这些符号?

这些符号有助于 C++ 程序员编写更简单、更高效、更易于维护的代码。还可以帮助程序员更具体地向函数传递值以防止未知行为。通常在使用开源库或外部库时发现。

有关在发生此类错误时传递变量的最佳实践,请阅读 CPP Core Guidelines 的更多信息。它深入解释了在这种情况下传递给函数的内容以提高执行代码的效率。

参考:

  1. CPP Core Guidelines
  2. Programmer Sought

【讨论】:

  • 技术上 num2 不会改变,但它指向的值会改变。相反,如果您尝试修改num2 = num3,则在函数之外不会发生任何可观察到的事情。还有一些其他问题,尽管它更多地被称为“输入/输出”:stackoverflow.com/questions/6900035/…
猜你喜欢
  • 2015-12-14
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 2023-03-12
  • 2014-08-13
  • 2011-10-12
  • 1970-01-01
  • 2016-07-30
相关资源
最近更新 更多