为什么我可以在C++中为文字值分配现有引用?

Bil*_*ard -1 c++ initialization reference literals variable-assignment

考虑以下:

int ival = 1.01;
int &rval = 1.01; // error: non-const reference to a const value.
int &rval = ival;

rval = 1.01;
Run Code Online (Sandbox Code Playgroud)

&rval到文字值的第一次赋值失败了.如果我注释掉该行代码编译并运行.我理解为什么初始化失败了,但我很困惑为什么rval的赋值在最后一行工作.我认为不允许分配对文字值的引用.

编辑:谢谢你的快速解答.我很想删掉这个以掩饰我的耻辱,但我想我会留在这里,所以其他人都可以指出并笑.

在我自己的辩护中,我正在编写一本书中的练习(C++ Primer),这个问题与参考初始化有关.尽管如此,首先完全忽略了参考点是非常尴尬的.:)

cas*_*One 6

ival不是字面值,1.01是字面值.它被复制到ival一个变量,它绝对可以将它的引用分配给另一个变量.


Mic*_*urr 6

初始化引用后,它是初始化引用的别名.初始化参考后,您无法更改参考引用的内容.但是,您可以更改引用引用的"事物"(如果引用不是const).

最后一行实际上是将变量设置ival为1.01(再次).