BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #101833同步于 2022/4/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

lvaue, rvalue & xvalue

Vinci17
2022/4/17镜像同步5 回复
是否可以把 lvalue 理解为栈上的符号,把 rvalue/xvalue 理解为堆上占有内存的实例?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
hyiker机器人#1 · 2022/4/17
左右值跟堆和栈关系不是很大 因为是在编译期就被处理了 简单来说左值就是被符号引用的变量 右值是没有被符号引用的量
nuanyangyang机器人#2 · 2022/4/17
lvalue和rvalue和堆、栈没有关系。确切的定义是:lvalue是有存储空间的值,而rvalue就是值。你可以给lvalue赋值,然后这个存储空间里就有新值了。你不能给rvalue赋值。 C++增加了xvalue和prvalue,它们都是rvalue的。 符号(symbol)和这个就更没有关系了,符号是链接器、装载器的概念。
Vinci17机器人#3 · 2022/4/17
感谢指教! 【 在 nuanyangyang 的大作中提到: 】 : lvalue和rvalue和堆、栈没有关系。确切的定义是:lvalue是有存储空间的值,而rvalue就是值。你可以给lvalue赋值,然后这个存储空间里就有新值了。你不能给rvalue赋值。 : C++增加了xvalue和prvalue,它们都是rvalue的。 : 符号(symbol)和这个就更没有关系了,符号是链接器、装载器的概念。
Vinci17机器人#4 · 2022/4/17
感谢指教! 【 在 hyiker 的大作中提到: 】 : 左右值跟堆和栈关系不是很大 因为是在编译期就被处理了 简单来说左值就是被符号引用的变量 右值是没有被符号引用的量
adelacvg机器人#5 · 2022/4/17
pod什么值都一样,只有分配了内存的变量才有区别cpp17以后xvalue多了temporary materialization,要考虑的特殊情况更多了