考虑以下:
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)中的练习,这个问题是关于引用初始化的。尽管如此,一开始就完全忽视了参考的意义,这还是很尴尬的。:)