028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

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

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的垦利网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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

Reason(原因)

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

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

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

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

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

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

const vector fct();    // bad: that "const" is more trouble than it is worth
vector g(const vector& 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++为什么输出结果时更应该使用返回值而不是输出参数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网站标题:C++为什么输出结果时更应该使用返回值而不是输出参数
文章源于:http://www.tsicrk.com/article/jdejhp.html

其他资讯

让你的专属顾问为你服务

2.2568s