C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 明确默认的移动构造函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
根据c 11标准,只有在以下情况下才会生成认移动构造函数

> X没有用户声明的复制构造函数,并且
> X没有用户声明的复制赋值运算符,
> X没有用户声明的移动赋值运算符,
> X没有用户声明的析构函数,和
>移动构造函数不会被隐式定义为已删除.

我还能明确认吗?似乎在clang中正常工作.像这样例如:

class MyClass {
private:
  std::vector<int> ints;
public:
  MyClass(MyClass const& other) : ints(other.ints) {}
  MyClass(MyClass&& other) = default;
};

解决方法

该规则的动机是,如果认的复制构造函数不适用于您的类,那么认的移动构造函数也可能无法工作(规则为5,或者我们在C 11中做的任何事情).所以,是的,你可以明确地认它,作为一个程序员,它将工作的荣誉.

在您的示例代码中,您可以改为删除复制构造函数,因为它与代码相同.

大佬总结

以上是大佬教程为你收集整理的c – 明确默认的移动构造函数全部内容,希望文章能够帮你解决c – 明确默认的移动构造函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。