gpt4 book ai didi

c++ - 为什么在 C++ 中不允许使用 int& a =

转载 作者:可可西里 更新时间:2023-11-01 18:26:34 27 4
gpt4 key购买 nike

我正在阅读 C++ 中的引用。它说 int& a = 5 给出了编译时错误。

Thinking in C++ - Bruce Eckel 中,作者说编译器必须首先为 int 分配存储空间并生成绑定(bind)到引用的地址。存储必须const因为改变它没有意义

我现在很困惑。我无法理解其背后的逻辑。为什么不能更改存储中的内容?我知道根据 C++ 规则它是无效的,但为什么呢?

最佳答案

"The storage must be const because changing it would make no sense."

如果你希望a是对一个const值的引用,你必须将它声明为const,因为a是引用一个临时值常数值,并且不可能更改它。

const int &a = 123;
a = 1000; // `a` is referencing to temporary 123, it is not possible to change it
// We can not change 123 to 1000
// Infact, we can change a variable which its value is 123 to 1000
// Here `a` is not a normal variable, it's a reference to a const
// Generally, `int &a` can not bind to a temporary object

对于非常量绑定(bind):

int x = 1;
int &a = x;

a 是对左值的引用。简单的说,它是另一个变量的别名,所以在右边你应该给一个变量。引用 a 在首次绑定(bind)后不能更改并绑定(bind)到另一个变量;

在 C++11 中,您可以通过右值引用来引用临时对象/值:

int &&a = 123;

关于c++ - 为什么在 C++ 中不允许使用 int& a = <value>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375634/

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