为什么更改参考点以不引发错误? Iv在我的C++研究中提到了参考文献。它规定了以下规则:
一旦一个引用被初始化为一个对象,它就不能被更改为引用另一个对象 Iv写了一个简短的代码(在练习中被要求)来证明这个规则是正确的为什么更改参考点以不引发错误? Iv在我的C++研究中提到了参考文献。它规定了以下规则:,c++,reference,rules,C++,Reference,Rules,一旦一个引用被初始化为一个对象,它就不能被更改为引用另一个对象 Iv写了一个简短的代码(在练习中被要求)来证明这个规则是正确的 int y = 7; int z = 8; int&r = y; r = z; 有人能解释为什么此代码编译时没有任何错误或警告吗?它不会将引用别名设为其他名称,但会更改r所包含内容的值 int&r = y; r是指y r = z; 通过将z的值赋给r,将y和r的值更改为z,从而y int&r = y; r = z; 它不会更改引用。而是
int y = 7;
int z = 8;
int&r = y;
r = z;
有人能解释为什么此代码编译时没有任何错误或警告吗?它不会将引用别名设为其他名称,但会更改
r
所包含内容的值
int&r = y;
r
是指y
r = z;
通过将z
的值赋给r
,将y
和r
的值更改为z
,从而y
int&r = y;
r = z;
它不会更改引用。而是更改引用变量指向的值。引用变量只是y
的另一个名称。因此r=z
相当于
y = z;
也就是说,r=z
更改y
的值
int&r = y;
r = z;
引用变量不能以任何方式重置为引用另一个变量。
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)
您没有更改引用;您正在为引用的对象设置一个新值。在本例之后,您应该注意y==8。当您执行
r=z
时,您不是在重新放置引用,而是在将z
的值复制到y中。为了本例,我必须尝试重新放置引用,以表明编译器不允许这样做。我该怎么写呢?换句话来说:“我该怎么做[这件不可能做的事]?”@James-我读这本书时很少听到笑声。谢谢。演示所需错误条件的一个好方法是创建一个包含对int的引用的结构。创建该结构的两个实例(称为A和b),并用两个不同的int初始化。现在尝试“a=b”。这将产生一个错误,因为它成功的唯一方法是更改引用的内容。
int&r = y;
r = z;