C++为什么输出结果时更应该使用返回值而不是输出参数

发布时间:2021-11-26 15:20:48 作者:iii
来源:亿速云 阅读:166

这篇文章主要讲解了“C++为什么输出结果时更应该使用返回值而不是输出参数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++为什么输出结果时更应该使用返回值而不是输出参数”吧!

输出结果时更应该使用返回值而不是输出参数

Reason(原因)

返回值本身可以说明用途,而引用类型可以是输入/输出参数也有可能只是输出参数,容易被误用。

这种观点可以覆盖像标准容器那样的大对象,它们会为了性能和避免显式内存管理而使用隐式移动操作。

如果你有多个值需要返回,使用tuple或者类似的多成员类型。

Example(示例)
// OK: return pointers to elements with the value xvector<const int*> find_all(const vector<int>&, int x);
// Bad: place pointers to elements with value x in-outvoid find_all(const vector<int>&, vector<const int*>& out, int x);
 
Note(注意)

包含多个(单独看都可以低成本移动)元素的结构体合起来移动时可能会代价高昂。

不推荐返回常量值。这种过时的建议现在已经被淘汰;它不会带来好处,而且其接口含有移动语义。

const vector<int> fct();    // bad: that "const" is more trouble than it is worth
vector<int> g(const vector<int>& vx){    // ...    fct() = vx;   // prevented by the "const"    // ...    return fct(); // expensive copy: move semantics suppressed by the "const"}

建议为返回值增加const修饰的观点认为,这样会阻止(极少发生的)对临时变量的意外访问。相反的观点认为这样做会(非常多地)阻止移动语义的运用。

Exceptions(例外)

Example(示例)

struct Package {      // exceptional case: expensive-to-move object    char header[16];    char load[2024 - 16];};
Package fill();       // Bad: large return valuevoid fill(Package&);  // OK
int val();            // OKvoid val(int&);       // Bad: Is val reading its argument

译者注:示例代码说明的是POD使用引用传递输出值,而小数据者应该直接使用返回值。

Enforcement(实施建议)

感谢各位的阅读,以上就是“C++为什么输出结果时更应该使用返回值而不是输出参数”的内容了,经过本文的学习后,相信大家对C++为什么输出结果时更应该使用返回值而不是输出参数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. CSharp输出型参数学习
  2. C++ 输出控制

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:mac os如何安装iterm2+fish shell终端配色及vim语法高亮

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》