gpt4 book ai didi

c++ - 按值赋值还是按引用赋值?

转载 作者:行者123 更新时间:2023-12-01 14:20:20 24 4
gpt4 key购买 nike

SomeStruct getSomeStruct();

const SomeStruct a = getSomeStruct();
const SomeStruct &b = getSomeStruct();

我理解按值传递按引用按常量引用之间的区别。我的问题是,上面的示例与将参数传递给函数时是否相同?所以 b 的赋值速度更快,因为它不需要复制数据,这与 a 的赋值不同?

最佳答案

So the assignment of b is faster because it doesn't have to copy data, unlike the assignment of a?

没有。在复制方面没有区别。

您正在做的是将一个引用绑定(bind)到一个临时对象。在这种特殊情况下,临时对象的生命周期超出了完整表达式以匹配引用的生命周期。该程序的行为实际上与您没有使用引用一样。在此处使用引用有一个缺点,即程序员可能会对其含义感到困惑,除非他们了解此生命周期延长规则。

当您知道函数不返回引用时,没有理由使用这样的引用。如果该函数确实返回了引用,那么您将避免使用引用进行复制。复制比通过引用的间接复制快还是慢取决于类型。

生命周期延长有用的情况是在模板中,您不知道函数返回的是引用还是引用包装器(这是一个对象,即不是引用,但在某些方面表现得像引用,因为重载运算符)。临时生命周期延长允许两种情况以相同的方式运行。

关于c++ - 按值赋值还是按引用赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61249860/

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