默认成员函数移动构造和移动赋值运算符重载
1.C++11 新增了两个默认成员函数:移动构造函数和移动赋值运算符重载
2.默认移动构造的生成条件:
如果没有实现移动构造、移动赋值运算符重载、析构、拷贝构造、赋值运算符重载,那就会生成一个默认的移动构造函数
默认移动构造的行为:
对于内置类型成员就值拷贝,对于自定义类型成员,如果有移动构造,就调移动构造,如果没有就调拷贝构造
3.默认移动赋值运算符重载的生成条件和行为同默认移动构造,不多解释
4.为什么默认移动构造的生成条件除了不实现移动构造外,还需要不实现实现析构、拷贝构造、赋值运算符重载、移动赋值运算符重载?
那是因为析构、拷贝构造、赋值运算符重载、移动赋值运算符重载自己实现就意味着对象是有资源的,如果有资源,那移动构造就要自己实现来控制;如果这四个都不实现就说明没资源,没资源那就可以用默认移动构造来玩