在 C++ 中,通过引用传递基本类型而不是通过值返回是否有效率优势?
[...] 通过引用传递基元类型而不是通过值返回是否有效率优势?
不太可能。首先,除非您从探查器中获得的数据让您有理由这样做,否则您在设计程序时不应担心性能问题。选择simplest设计,以及设计最能传达您的意图.
此外,原始类型通常复制起来很便宜,因此这不太可能成为应用程序的瓶颈。由于它是最简单的选项,也是使函数界面最清晰的选项,你应该按值传递.
只要看一下签名,就可以清楚地看到一个函数,例如:
void foo(int);
不会存储对参数的引用(因此,不会遇到诸如悬空引用或指针之类的问题),不会以调用者可见的方式更改参数,等等。
上述所有内容都不能从函数签名中推断出来,例如:
void f(int&); // May modify the argument! Will it? Who knows...
Or even:
void f(int const&); // May store a reference! Will it? Who knows...
此外,按值传递甚至可以通过允许编译器执行潜在别名会阻止的优化来提高性能。
当然,所有这一切都是假设您实际上不需要修改函数内部的参数,以便在函数返回后调用者可以看到该参数的副作用 - 或者存储对该参数的引用争论。
如果是这种情况,那么您当然应该通过引用传递并使用适当的const
资格。
对于更广泛的讨论,另请参阅StackOverflow 上的问答 https://stackoverflow.com/questions/15600499/how-to-pass-parameters-correctly/15600615#15600615.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)