gpt4 book ai didi

c++ - 为什么写 func( const Class &value ) 更可取?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:37 25 4
gpt4 key购买 nike

为什么要使用 func( const Class &value ) 而不仅仅是 func( Class value )?现代编译器肯定会使用任何一种语法来做最有效的事情。这是否仍然是必要的,或者只是对非优化编译器时代的保留?

  • 补充一下,gcc 将为这两种语法生成类似的汇编代码输出。也许其他编译器没有?

显然,事实并非如此。我很久以前从一些代码中得到的印象是 gcc 这样做了,但是实验证明这是错误的。感谢 Michael Burr,他对 similar question 的回答如果在这里给出,将被提名。

最佳答案

2 个签名之间有 2 个较大的语义差异。

首先是在类型名称中使用&。这表明该值是通过引用传递的。删除 this 会导致对象按值传递,这实际上会将对象的拷贝传递给函数(通过复制构造函数)。对于只需要读取数据的操作(典型的 const &),执行对象的完整拷贝会产生不必要的开销。对于不小的类或集合,此开销并非微不足道。

第二个是const的使用。这可以防止函数通过 value 引用意外修改 value 的内容。它允许调用者某种程度的保证值不会被函数改变。是的,在许多情况下,传递拷贝可以让调用者对此有更深层次的保证。

关于c++ - 为什么写 func( const Class &value ) 更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659099/

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