与C++中的参考混淆

C++ 编程语言 中,它说“在初始化后不能引用不同的对象”。但是,当我编写下面的代码时,它打印了 20,这意味着引用引用了另一个对象。

int a = 10;
int b = 20;
int& ref = a;
ref = b;
cout << ref << endl;

但是,当我编写下面的代码时,它打印了 10,a 的值。

int a;
int b;
int& ref = a;
ref = b;
a = 10;
b = 20;
cout << ref << endl;

为什么会发生这种情况?我应该如何理解 C++ 参考?

回答

在行中

int& ref = a;

您设置ref为对变量的引用a。然后设置这个对象是值b中的下一行:

ref = b;

请注意,a现在将具有的值b(由于您尚未初始化它,因此它将为零)。

接下来,您设置的a为10

a = 10;

此时ref也将设置为 10,因为它是对 的引用a。然后您可以设置b为20。但是,这使得没有区别ref,因为它是它是一个参考a,这仍然是10。

所以,当你打印出来时ref,你会得到a- 即 10的值。

  • *(which since you haven't initialized it yet will be zero)* Don't count on that. It only MIGHT be zero if `a` is an automatic variable local to a function, and the `cout << ref << endl;` suggests a function is involved.

以上是与C++中的参考混淆的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>