gpt4 book ai didi

c++ - 通过引用传递 "advanced"概念?

转载 作者:太空狗 更新时间:2023-10-29 23:52:54 26 4
gpt4 key购买 nike

当你这样做时:

int square(int& x) { return x*x;};

int s = square(40); // This gives error

要解决这个问题,您可以这样做:

int square(const int& x) { return x*x;};

int s = square(40); // This is OK

我知道 40 是一个常数,但如果我这样做会怎么样:

const int& x = 40 

为什么只用 const 关键字就可以了?这是编译器保护任何人都不能更改 x 引用的值的方式吗?

40 是一个常量,所以我们甚至不知道它在内存中的位置,但编译器不应该知道这个地址,因此应该允许将值从 40 更改为 30,因为编译器可以直接转到地址&40 并将值更改为 30?

最佳答案

仅仅因为可以实现并不意味着您应该这样做。让 40 真的变成 30 很有趣,但特别难以维护,不应该被允许。此外,40 不一定实际上地址。考虑缓存、寄存器或立即指令中的 40。

关于c++ - 通过引用传递 "advanced"概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332101/

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