#include<iostream.h>
int main()
{
int m = 2;
int &x = m++;
cout<<m;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码应该给出OUTPUT:3
但是这段代码给出了错误:从类型为'int'的临时类中初始化'int&'类型的非const引用.
m++必须增加m(作为副作用),但要评估原始值.它通过返回一个保持m在增量前的值的临时变量来做到这一点.
非const l值引用不能绑定到临时对象.
你可以写:
int &x = ++m;
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为预增量运算符必须在增量之后返回值,从而能够计算到l值引用m.
但为了清楚起见,我不建议这样做.