gpt4 book ai didi

c++ - 将整数作为常量引用与复制

转载 作者:IT老高 更新时间:2023-10-28 13:58:49 25 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但我注意到在很多 API 中,许多采用不打算修改的整数参数的方法签名看起来像:

void 方法(int x);

而不是:

void 方法(const int &x);

在我看来,这两者的功能完全一样。 (编辑:在某些情况下显然不是,请参阅 R Samuel Klatchko 的回答)在前者中,该值被复制,因此无法更改原始值。在后者中,传递了一个常量引用,所以不能改变原来的。

我想知道的是为什么一个优于另一个 - 是因为性能与前者基本相同甚至更好吗?例如传递 16 位值或 32 位值而不是 32 位或 64 位地址?这是我能想到的唯一合乎逻辑的原因,我只想知道这是否正确,如果不是,为什么以及何时应该更喜欢 int x 而不是 const int &x 反之亦然。

最佳答案

这不仅仅是传递指针的成本(本质上就是引用),还包括在被调用方法的主体中取消引用以检索底层值。

这就是为什么通过值传递 int 几乎可以保证更快(此外,编译器可以优化并简单地通过处理器寄存器传递 int,消除了需要将其插入堆栈)。

关于c++ - 将整数作为常量引用与复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009543/

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