gpt4 book ai didi

c++ - 我应该什么时候通过 T const& 返回?

转载 作者:太空狗 更新时间:2023-10-29 20:04:47 26 4
gpt4 key购买 nike

我什么时候应该通过 T const& 返回?如果我不打算修改对象,我看不出它与按值返回有什么不同。通过 const 引用返回实际上只是意味着没有复制。所以什么时候返回 T const& 有用。

最佳答案

您更愿意按 const& 而不是按值返回的原因有两个。

首先是语义。通过 const& 返回内容的代码明确地告诉调用者,“这里是您所请求内容的只读版本。如果您想永久存储它,或者对其进行更改,您有责任复制它。”此返回类型的语义非常清晰,并且易于执行。

其次是优化。通过按值返回某些内容,您可以从编译器中删除一些优化机会。这不是说按值返回比按const&返回效率低(事实上,在相反的情况下可能 为真——考虑一个在 64 位系统上返回 char 的函数)。它只是意味着您从编译器的优化工具箱中删除了一种工具。还有另一种工具可以替代它——即内联调用和复制省略——所以这可能是一个清洗。这完全取决于上下文。

我提到“语义”是第一个原因,因为我认为它是最重要的。有太多的优化变量和太多的移动部分,以至于通常很难知道编译器将能够使用哪些优化以及何时使用。然而,有一件事始终是确定的——清晰的语义比困惑的语义更容易被人类理解。

关于c++ - 我应该什么时候通过 T const& 返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16964107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com