c++中常出现error为:非常量引用的初始值必须为左值。即说明你引用不是左值,可能为右值。那么左值与右值的区别是什么呢?
看能否对表达式取地址,如果能,则为左值;否则为右值。
例如:
int i = 5;
int &a = i;
这时编译通过,但是如果 int &a = 5;这样就出错了
这个5和i有什么区别,答案就是5是右值,i是左值,为什么,参考上面的话。
回到你的代码
你用一个函数的返回值给非常量引用初始化
那么函数的返回值是啥呢
在函数返回的时候,系统将返回值存放至eax寄存器,然后回到主函数中,eax寄存器存放的就是返回值,而这里这个返回值就是一个数值,不能对其取地址,所以这是一个右值
转载请注明原文地址: https://ju.6miu.com/read-1303685.html