5

我想知道C++中移动语义的起源是什么?特别是它是专门为这种语言发明的,还是在其他语言中有类似的东西?在后一种情况下,您能否提供一些参考。

4

2 回答 2

6

这个概念似乎没有任何特定的祖先。正如原始提案中所述,C++ 移动语义的起源是新闻组中的讨论:

多年来,C++ 论坛(最著名的是 comp.lang.c++.moderated)已经讨论了各种形式的移动语义。

在我看来,它们与 C++ 的左值和右值概念紧密结合,如果我没记错的话,这纯粹是一个 C++ 概念。没有左值、右值及其新的 C++11 朋友的语言不需要 C++ 实现它们的方式的移动语义。

不过,更一般地说,移动东西而不是复制的概念只是一个基本概念。每当您编写一个链表并通过实际上只是交换指向它们的指针来“交换元素”时,您就是在进行“移动”。基本上。

于 2012-02-14T20:46:51.957 回答
1

你可以阅读“A Proposal to Add Move Semantics Support to the C++ Language”来获得更多关于这个概念背后的动机的信息,以及为什么这需要直接的语言支持而不是使用库设施来实现。

于 2012-02-14T20:47:15.547 回答