为什么更改引用指向不引发错误?

Bap*_*ton 4 c++ reference rules

我已经进入了关于参考文献的c ++研究阶段.它声明了以下规则:

将引用初始化为对象后,无法将其更改为引用另一个对象.

Iv写了一个简短的代码(正如练习中所要求的那样),旨在证明这个规则是正确的.

int y = 7;
int z = 8;

int&r = y;
r = z;
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这个代码编译没有任何错误或警告?

Jam*_*lis 7

r = z不会改变r"指向"的内容.它将值指定给z指向的对象r.

以下代码与您的代码完全相同,但使用指针而不是引用:

int y = 7;
int z = 8;

int* p = &y; // p points to y
*p = z;      // assign value of z to the object pointed to by p (which is y)
Run Code Online (Sandbox Code Playgroud)

  • 重新提出你的问题:"我怎么能做[这件事不可能做到的事情]?" (3认同)