这是我获得大部分信息的地方: http: //en.cppreference.com/w/cpp/language/move_constructor
显然,这些是隐式生成的移动构造函数起作用的条件:
- 没有用户声明的复制构造函数
- 没有用户声明的复制赋值运算符
- 没有用户声明的移动赋值运算符
- 没有用户声明的析构函数
- 隐式声明的移动构造函数未定义为已删除
- 如果存在用户声明的移动构造函数,仍然可以使用关键字强制生成隐式声明的移动构造函数
default
我的问题是:
- 依赖隐式自动移动构造函数是否安全?
- 如何检查它是否真的有效,而不是默认的复制构造函数?
- 最后,也是最重要的,这是一个好主意吗?为什么?还是定义我自己的总是更好?
我更倾向于遵循三规则并手动创建析构函数、复制和移动构造函数以及复制和移动赋值运算符,但我只是对这个隐含的操作感到好奇。