我正在阅读 value types并且 values 和 objects 被提到好像它们意味着不同的东西,所以我假设它们确实如此。然后我尝试做一些研究但没有运气。我知道一个值是一个不能被进一步评估的表达式,但对象不就是一个值的“容器”吗?另外,根据我对表达式的术语理解,说一个对象包含一个表达式(因为值是一个表达式)会很奇怪吗?
我不会开始做太多的猜测,因为这可能只会使一切复杂化,并且可能会将焦点从值和对象之间的差异转移开。
编辑:对于那些将其标记为“太宽泛”的人,下面的问题是不是更宽泛了?What are rvalues, lvalues, xvalues, glvalues, and prvalues ?此外,还有很多其他关于 SO 的“差异”问题,其中许多与我链接的问题一样广泛。那么为什么这个特定问题无效?
最佳答案
值是比对象更抽象的概念。
正如评论中提到的那样,值与对象之间的区别/关系类似于水与杯子之间的区别/关系。
您需要一个容器(在本例中为杯子)来盛水,否则会漏水。同样,您需要一个对象来保存值,以免它们很快丢失或被覆盖。
一个对象总是有它的专用存储区域(在内存中),而一个值的生命周期可以短到一条指令(movl %eax, $1
)。
关于c++ - 值和对象之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287904/