【发布时间】:2015-05-11 04:17:32
【问题描述】:
我了解,只要在派生类中定义了自定义复制构造函数或赋值运算符,那么这些方法就有责任调用基类的相应方法。现在我的重点是移动构造函数。假设以下是我的移动构造函数。我有两种调用基类构造函数的方法。取自here
Derived(Derived&& d):Base(d) -->Form A
{}
Derived(Derived&& d):Base(std::move(d)) -->Form B
{}
现在哪种方法是正确的。根据我的理解和帖子上的最后一个答案,使用 Form B 将是危险和不正确的,因为在调用派生类构造函数时对象将被取消。但是在 formA 中调用了基类复制构造函数。打电话给 FormA 会更好。同样,在移动复制赋值运算符中,调用基类赋值运算符然后调用基类不是更好。
【问题讨论】: