什么是 C++ 中的 IN、OUT 和 IN/OUT 参数模式
What are IN, OUT and IN/OUT Parameters Modes in C++
- 什么是 IN(传入参数)?
- 什么是 OUT(传出参数)?
...等等。
Was scrolling through Stack Overflow and found a question similar to
this. It was later deleted by the author. There is no searchable
information on the web about this. Found a small post read and tried
to understand. This Q&A is what is understood from that post and help
others who might come across this topic. The aim here is to collate
some of the more important points for posterity.
这些术语用于定义函数对传递的变量执行何种操作。读取、写入或 Read/Write。这种表示法用于库的文档中,以确保调用者为函数提供适当的变量类型以适当地执行并且不会意外地阻碍输出或操作。
IN、OUT 和 IN/OUT 不是 C++ 关键字,文档中使用此模式只是为了指示最适合传递的参数类型。
IN(传入参数):
表示接口只会读取值。如果参数按值传递,则可以不将变量作为 const 传递,因为函数将有一个局部变量来执行操作。为了避免复制,首选通过引用传递,因此建议使用 const 来防止任何更改。
OUT(传出参数):
当参数标记为out时,表示该函数不需要读取值,参数值不重要。实际上标记的参数需要输出多个值。这些参数需要是指针、引用和结构。
IN/OUT
当参数模式为IN/OUT时,表示该函数需要参数传入的值,读取该值,稍后修改。函数需要输入值和输出值。
为什么需要这些符号?
这些符号帮助 C++ 程序员编写更简单、更高效、更易于维护的代码。还可以帮助程序员更具体地将值传递给函数以防止未知行为。通常在使用开源库或外部库时发现。
有关在出现此类通知时传递变量的最佳实践,请阅读 CPP Core Guidelines 上的更多内容。它深入解释了在这种情况下将什么传递给函数以提高执行代码的效率。
参考文献:
- 什么是 IN(传入参数)?
- 什么是 OUT(传出参数)?
...等等。
Was scrolling through Stack Overflow and found a question similar to this. It was later deleted by the author. There is no searchable information on the web about this. Found a small post read and tried to understand. This Q&A is what is understood from that post and help others who might come across this topic. The aim here is to collate some of the more important points for posterity.
这些术语用于定义函数对传递的变量执行何种操作。读取、写入或 Read/Write。这种表示法用于库的文档中,以确保调用者为函数提供适当的变量类型以适当地执行并且不会意外地阻碍输出或操作。
IN、OUT 和 IN/OUT 不是 C++ 关键字,文档中使用此模式只是为了指示最适合传递的参数类型。
IN(传入参数):
表示接口只会读取值。如果参数按值传递,则可以不将变量作为 const 传递,因为函数将有一个局部变量来执行操作。为了避免复制,首选通过引用传递,因此建议使用 const 来防止任何更改。
OUT(传出参数):
当参数标记为out时,表示该函数不需要读取值,参数值不重要。实际上标记的参数需要输出多个值。这些参数需要是指针、引用和结构。
IN/OUT
当参数模式为IN/OUT时,表示该函数需要参数传入的值,读取该值,稍后修改。函数需要输入值和输出值。
为什么需要这些符号?
这些符号帮助 C++ 程序员编写更简单、更高效、更易于维护的代码。还可以帮助程序员更具体地将值传递给函数以防止未知行为。通常在使用开源库或外部库时发现。
有关在出现此类通知时传递变量的最佳实践,请阅读 CPP Core Guidelines 上的更多内容。它深入解释了在这种情况下将什么传递给函数以提高执行代码的效率。