gpt4 book ai didi

c++ - 传递引用的开销是多少?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:54 26 4
gpt4 key购买 nike

当有问题的 getter 返回引用时,访问成员变量的开销有多大?

例如,如果您有一个需要相当频繁地使用此类访问器的类,那么将所述引用存储在需要使用它的类中并简单地初始化一次会更有效率吗?

最佳答案

关于复杂性,返回或传递引用就像传递指针一样。它的开销相当于传递一个指针大小的整数,再加上一些指令。简而言之,几乎在所有情况下都尽可能快。小于或等于指针大小的内置类型(例如 int、float)是明显的异常(exception)。

在最坏的情况下,传递/返回引用可以添加一些指令或禁用一些优化。这些损失很少超过按值返回/传递对象的成本(例如,调用复制构造函数 + 析构函数要高得多,即使对于非常基本的对象也是如此)。通过引用传递/返回是一个很好的默认值,除非每条指令都很重要,并且您已经测量了这种差异。

因此,使用引用的开销非常低。

在不知道类型及其构造函数/析构函数的复杂性的情况下,无法真正量化它会快多少多少,但如果它不是内置类型,则持有一个本地类型并返回在大多数情况下,通过引用它会是最快的——这完全取决于对象及其拷贝的复杂性,但只有极其微不足道的对象才能接近引用的速度。

关于c++ - 传递引用的开销是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8250932/

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