本篇内容介绍了“C++中的in-out指什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
译者注:in-out指的是向函数传递输入信息的同时又从函数获取输出信息的参数。
Reason(原因)
This makes it clear to callers that the object is assumed to be modified.
向调用者明示该对象可能被修改。
Example(示例)
void update(Record& r); // assume that update writes to r
T&类型参数可以向函数传递信息也可以从函数获取信息。因此T&可以作为输入/输出参数使用。(但是如果运用不当,)它本身可能就是一个问题并且是错误的起因。
void f(string& s)
{
s = "New York"; // non-obvious error
}
void g()
{
string buffer = ".................................";
f(buffer);
// ...
}
代码中函数g()的编写者向f()提供一个缓冲区用于填充,但是f()简单地替换了它(其代价稍高于简单的字符串拷贝)。如通过g()的编写者不正确地假设了buffer的大小,可能会导致非常不好的错误。
Enforcement(实施建议)
(Moderate) ((Foundation)) Warn about functions regarding reference to non-const
parameters that do not write to them.
(中等)((基本准则))当有函数将某引用视为非常量参数但又不去写它们的时候,报警。
译者注:如果只是用于输入信息,应该使用传值或者const类型。
(Simple) ((Foundation)) Warn when a non-const
parameter being passed by reference is move
d.
(简单)((基本准则))当通过引用传递的非常量参数被移动的时候报警。
译者注:非常量参数意味着也会用于输出信息,如果内容被移动则无法继续使用。
“C++中的in-out指什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。