C ++中移动语义的起源是什么?

时间:2012-02-14 20:37:27

标签: c++ history move-semantics

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

2 个答案:

答案 0 :(得分:6)

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

  

在C ++论坛中讨论了各种形式的移动语义(大多数   特别是comp.lang.c ++。主持)多年。

在我看来,它们与C ++关于左值和左值的概念紧密结合,如果我没有弄错的话,它纯粹是一个C ++概念。没有左值,右值和它们的新C ++ 11朋友的语言不需要像C ++实现它们那样的移动语义。

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

答案 1 :(得分:1)

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