考虑以下:
int ival = 1.01; int &rval = 1.01; // error: non-const reference to a const value. int &rval = ival; rval = 1.01;
&rval到文字值的第一次赋值失败了.如果我注释掉该行代码编译并运行.我理解为什么初始化失败了,但我很困惑为什么rval的赋值在最后一行工作.我认为不允许分配对文字值的引用.
编辑:谢谢你的快速解答.我很想删掉这个以掩饰我的耻辱,但我想我会留在这里,所以其他人都可以指出并笑.
在我自己的辩护中,我正在编写一本书中的练习(C++ Primer),这个问题与参考初始化有关.尽管如此,首先完全忽略了参考点是非常尴尬的.:)
ival
不是字面值,1.01
是字面值.它被复制到ival
一个变量,它绝对可以将它的引用分配给另一个变量.
初始化引用后,它是初始化引用的别名.初始化参考后,您无法更改参考引用的内容.但是,您可以更改引用引用的"事物"(如果引用不是const
).
最后一行实际上是将变量设置ival
为1.01(再次).