【发布时间】:2018-02-27 07:25:38
【问题描述】:
有相当复杂的(对我来说)rules 定义了何时生成隐式默认的移动构造函数以及何时不生成。我担心的是不会生成默认的移动构造函数。另外我担心我(或其他人)将来修改类,隐式移动构造函数会消失。
有一个"advice" 表示“您始终可以显式调用可以使用= default 自动生成的函数的默认生成(这就是语法的用途)”。现在我问:这是个好主意吗?有什么理由不这样做吗?我想如果没有问题,那么我们就不需要默认的移动构造函数,移动构造函数总是会生成。但既然标准定义了如此严格的规则,这样做可能是有原因的。
【问题讨论】:
-
我的观点:我认为明确表达总是合理和好的。
-
仅仅因为你可以并不意味着你应该。与许多其他事情一样,这取决于情况和您的用例。这个问题没有单一的“是这样做”或“不这样做”的答案。
-
在我看来——当然,这是正确的答案:学习规则然后最少编码。编码到最小的公分母对我来说总是一种气味。
-
“五规则”和“零规则”都很好,如果您遵循五规则,请正确获取 noexcept。
标签: c++ move-semantics