usu*_* me 3 c++ reference post-increment
我正在阅读有关参考文献的维基百科页面.
它包含以下代码:
int& preinc(int& x)
{
return ++x; // "return x++;" would have been wrong
}
preinc(y) = 5; // same as ++y, y = 5
Run Code Online (Sandbox Code Playgroud)
我确实尝试使用return x++;而不是编译return ++x;.正如预测的那样,这导致了以下错误:
错误:从'int'类型的临时类型初始化'int&'类型的非const引用
我不明白这个错误.我有一种模糊的直觉,即x的增量发生得太晚(即,在preinc的函数调用结束后).但是,我不知道这是一个什么问题,因为变量x永远不会存在.欢迎任何解释.
错误的原因是post增量x++返回一个临时值,这不能绑定到非const左值引用.这是同一问题的简化版本:
int i = 42;
int& j = i++; // Error: i++ returns temporary value, then increments i.
const int& k = i++; // OK, const reference can bind to temporary.
Run Code Online (Sandbox Code Playgroud)