c++中左值与右值的区别

来源:互联网 发布:windows cmd 切换盘符 编辑:程序博客网 时间:2024/06/06 04:17

c++中常出现error为:非常量引用的初始值必须为左值。即说明你引用不是左值,可能为右值。那么左值与右值的区别是什么呢?

看能否对表达式取地址,如果能,则为左值;否则为右值。

例如:

int i = 5;int &a = i;这时编译通过,但是如果 int &a = 5;这样就出错了这个5和i有什么区别,答案就是5是右值,i是左值,为什么,参考上面的话。回到你的代码你用一个函数的返回值给非常量引用初始化那么函数的返回值是啥呢在函数返回的时候,系统将返回值存放至eax寄存器,然后回到主函数中,eax寄存器存放的就是返回值,而这里这个返回值就是一个数值,不能对其取地址,所以这是一个右值

0 0
原创粉丝点击