gpt4 book ai didi

c++ - 通过引用传递原始类型而不是按值返回有什么效率优势?

转载 作者:IT老高 更新时间:2023-10-28 23:18:26 25 4
gpt4 key购买 nike

在 C++ 中,通过引用传递原始类型而不是按值返回有效率优势吗?

最佳答案

[...] is there an efficiency benefit to passing primitive types by reference instead of returning by value?

不太可能。首先,除非您从探查器获得的数据为您提供了这样做的理由,否则您在设计程序时不应该担心性能问题。选择最简单的设计,以及最能传达您的意图的设计。

此外,原始类型通常复制起来很便宜,因此这不太可能成为您的应用程序的瓶颈。而且由于它是最简单的选项,也是使函数界面最清晰的选项,您应该按值传递

只看签名,很明显是这样的一个函数:

void foo(int);

不会存储对参数的引用(因此,不会遇到悬空引用或指针等问题),不会以调用者可见的方式更改参数,等等.

以上都不能从函数签名中推导出来:

void f(int&); // May modify the argument! Will it? Who knows...

甚至:

void f(int const&); // May store a reference! Will it? Who knows...

此外,按值传递甚至可以通过允许编译器执行潜在别名会阻止的优化来提高性能。

当然,所有这一切都是假设您实际上不需要修改函数内部的参数,即在函数返回后调用者可以看到该参数的副作用 - 或存储一个引用该论点。

如果是这种情况,那么您当然应该通过引用传递并使用适当的 const 限定条件。

有关更广泛的讨论,另请参阅 this Q&A on StackOverflow .

关于c++ - 通过引用传递原始类型而不是按值返回有什么效率优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133883/

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