C ++在复制构造函数和移动语义之间的区别

时间:2018-03-18 16:55:33

标签: c++ move-semantics

为什么我应该使用基于move-semantics的复制构造函数?我的意思是我可以使用非const引用并执行相同的操作:从对象获取数据而不进行复制。还是不?

1 个答案:

答案 0 :(得分:0)

嗯,是的,您可以 - 例如auto_ptr尝试过它 - 但它不能很好地工作:例如,您不能将具有此类破坏性副本的对象放入标准容器中,因为标准容器可能需要没有破坏原件的副本。如果例如,那将是令人惊讶的insert会破坏源对象,但另一方面,有些情况(例如当源是临时的时候)移动时很有意义。因此,像往常一样,C ++允许两种情况(插入过载以进行复制和移动)并允许(有些人会说"强制")您可以在它们之间进行选择。