【发布时间】:2017-11-21 00:26:05
【问题描述】:
我看到了这个:question
但是对于像我这样的 C++ 新手来说,答案非常很复杂。如果有人可以帮助我,我会很高兴。
CLASSA & operator=(CLASSA && other); //move assignment operator
CLASSA & operator=(CLASSA other); //copy assignment operator
我仍然不明白为什么我们需要这两个?他们基本上做同样的事情?那么有什么区别,你会在哪里使用一个而不是另一个?
【问题讨论】:
-
不是答案,但复制分配应该将
const CLASSA &other作为参数。 -
在实现移动赋值运算符时,您可以利用
other变量已知是临时变量并且即将被销毁(从调用返回时)这一事实。因此,如果您愿意,您可以利用这一点并“窃取”它的内容,而不是复制它们。只要你让other处于有效状态(这样它就可以被彻底销毁),任何代码都不会知道你做了什么。 -
只有当他们不做同样的事情时,你才需要两者。
标签: c++