首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中,值语义和移动语义之间有什么联系?

在C++中,值语义和移动语义之间有什么联系?
EN

Stack Overflow用户
提问于 2018-05-06 11:07:31
回答 1查看 1K关注 0票数 4

有很多文章讨论价值语义和引用语义,也许更多地试图解释移动语义。然而,从来没有人谈论过值语义和移动语义之间的连接。它们是正交的概念吗?

注意:这个问题不是关于比较值语义和移动语义,因为很明显这两个概念不是“可比较的”。这个问题是关于他们是如何联系的,特别是(就像@StoryTeller说的),关于讨论(如何):

移动语义有助于更多地使用值类型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-06 13:27:19

来自原搬迁方案

复制与移动 C和C++是建立在复制语义之上的。这是件好事。Move语义并不是试图取代复制语义,也不是以任何方式破坏它。相反,这一提议旨在增强复制语义。一般用户定义的类可能是可复制的和可移动的,其中一个或另一个,或者两者都不是。 复制和移动之间的区别是,副本使源保持不变。另一方面,移动会使源处于为每种类型定义不同的状态。源的状态可能不变,也可能完全不同。唯一的要求是对象保持自洽状态(所有内部不变量仍然完好无损)。从客户端代码的角度来看,选择move而不是copy意味着您不关心源的状态发生了什么。 对于豆荚,移动和复制是相同的操作(直到机器指令级别)。

我想还可以加上这样的话:

Move语义允许我们保持值语义,但同时在原始(复制)对象的值对程序逻辑不重要的情况下获得引用语义的性能。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50198991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档