C++ 为什么引用值会改变以前的值?

C++ Why do reference values change previous values?

有人可以帮我解决这个问题吗?我认为输出将是 20 10 20(按照 ref1、num1、num2 的顺序)。为什么输出20 20 20? ref1 改变也会改变 num1?参考值对我来说是一个新概念,所以如果这是一个愚蠢的问题,我很抱歉。我知道你们更喜欢指针值,但在 class 这就是我们正在学习的内容,所以我想把它记下来。谢谢!

#include <iostream>

int main()
{
int num1 = 10;
int num2 = 20;
int &ref1 = num1;

ref1 = num2;

std::cout << "Ref1: " << ref1 << std::endl
          << "Num1: " << num1 << std::endl
          << "Num2: " << num2 << std::endl;
}

Why does it output 20 20 20

ref1 是对 num1 的引用,因此当您将 ref1 赋值为 num2 其实你把num1赋值给了num2,这就是引用的目的

所以就像你这样做一样

int * ref1 = &num1;

*ref1 = num2;

how do I find out their memory values/addresses

ref1右边(printf中的情况)给出了num1[=31的值=],要获得引用元素的地址而不是像往常一样使用其值 &,所以 &ref1&num1。注意你不能重新分配一个引用,你只能初始化它们

你可以理解为引用变量是别名,即现有变量的别名 因此 ref1 num1 的另一个名称 当您执行 ref1=num2 时,ref1 被分配了 num2 值,即 20 并且类似的 num1 被分配了 20 值