【发布时间】:2016-09-10 11:52:55
【问题描述】:
我在看CppCon2014, Michael Caisse, The Canonical Class talk, 在 28'31",他展示了一个图表,显示了当用户提供一些复制控制时,编译器将如何隐式提供或不提供其余部分:
我不太了解带有“删除”的单元格——似乎标准说,当用户提供移动构造函数或移动赋值时,复制构造函数和复制赋值将被删除——好的,但为什么呢?
让我们更具体一点。
第一季度。当用户提供移动构造函数时,复制构造函数和复制构造函数将被删除 - 这是为了避免错误使用,为构造函数或赋值提供左值,左值变得无效?这是要显式强制将参数传递给构造函数或赋值为右值吗?
第二季度。当用户提供移动分配时,复制分配将被删除-这与Q1相同吗?
第三季度。当用户提供移动赋值时,复制构造函数将被删除—— 为什么这样?移动赋值似乎不会与复制构造函数混淆?
【问题讨论】:
标签: c++ constructor move