gpt4 book ai didi

c++ - 为什么不能给非常量引用赋值?

转载 作者:行者123 更新时间:2023-11-30 01:11:46 25 4
gpt4 key购买 nike

为什么这些定义都ok:

int func(int p=255) {
return p;
}


int func1(const int &p=255) {
return p;
}

但是这个定义:

int func2(int &p=255) {
return p;
}

导致编译错误?

背后的逻辑是什么?

最佳答案

通过引用获取参数意味着,您不使用变量的本地拷贝,而是使用已在调用函数范围内定义的变量。

虽然您的第一个示例很有意义(您有一个可以用默认值填充的局部变量 p),但第二个示例有点棘手:通常在使用引用时您希望变量有一个地址,因为您想要修改它。对于常量引用,编译器仍然允许您传递文字,即使“对文字的引用”之类的东西根本没有意义。

在第三种情况下,编译器希望您修改 p。但是这个修改应该影响内存的哪一部分呢? “255”没有地址 - 因此不能用作引用。

如果您想获得更详细的解释,您可能应该寻找“右值”和“左值”等关键字。

关于c++ - 为什么不能给非常量引用赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381684/

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