C++标准,主要在第5章,标题为表达式,定义哪些表达式是左值,哪些是右值.我读过那一章,我相信我可以正确区分左值和右值.
然而,在我阅读好的C++书籍和/或标准之前,我曾经认为左值是可以站在赋值左侧的东西,右值是不能的.显然,这个天真的定义有很多反例.一段时间后,我认为左值是一个有地址的东西,右值是没有的东西.这也似乎有一些反例,例如,一些临时物体,显然,它们确实有一个地址.
我的一个朋友问我什么是左值,什么是左值.我告诉他大概是什么,他要求一个更完整的答案.我告诉他去读标准.他拒绝骚扰他的大脑,并说他确信必须有一些必要和充分条件才能成为一个左右.
在那儿?
例如,左值是非const引用可以绑定的值.但这个并不令人满意.我正在寻找一些更明显的东西,这些东西很容易解释,而不需要考虑每种表达类型......
我希望这个问题很明确.
Pup*_*ppy 10
非常简单,rvalue是表达式结果不能在所述表达式结束后存活的时间.左值将.这个基本原则是移动语义和右值引用的功能 - 您可以毫无问题地修改它们,因为您知道对象的生命已经结束.
我发现将左值作为"有名字的东西"是最有用的简化.表达式++x是左值,名称为x.相比之下,rvalue是"没有名字的东西". x++是一个右值,因为它会产生一些未命名的值.
| 归档时间: |
|
| 查看次数: |
20619 次 |
| 最近记录: |