我想知道C ++中move semantics的起源是什么?特别是它是专门为这种语言发明的还是在其他语言中有类似的东西?在后一种情况下,你可以提供一些参考。
答案 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"以获取有关该概念背后的动机的更多信息,以及为什么需要直接语言支持而不是使用库设施实现。