如果我们没有实现移动构造并且没有实现析构函数、拷贝构造函数、赋值重载编译器才会生成默认移动构造函数。默认的移动构造函数对内置类型会按字节拷贝数据或移动资源分情况对于基本类型则是按字节拷贝对于类类型有资源申请的则是移动资源对自定义类型则是看有没有实现移动构造如果实现了就调用移动构造没有实现就调用拷贝构造。如果我们没有实现移动赋值并且没有实现析构函数、拷贝构造函数、赋值重载编译器才会生成默认移动赋值函数。默认的移动赋值函数对内置类型会按字节拷贝数据或移动资源分情况对于基本类型则是按字节拷贝对于类类型有资源申请的则是移动资源对自定义类型则是看有没有实现移动赋值如果实现了就调用移动赋值没有实现就调用拷贝构造。和上述移动构造基本一样如果我们实现了移动构造和移动赋值相应的编译器就不会生成移动构造和移动赋值了defult和deleteC11中为了让我们更好的控制默认成员函数提供defult关键字。其作用是当我们想使用某个默认成员函数时因为某种原因没有生成相应的默认成员函数我们可以使用defult关键字使其强制生成。例如我们实现了构造函数但是想使用默认移动构造就可以使用defult强制生成。如果我们想限制一些默认成员函数的生成使用delete关键字即可代码语言javascriptAI代码解释class Person { public: Person(const char* name , int age 0) :_name(name) , _age(age) {} Person(const Person p) :_name(p._name) , _age(p._age) {} //强制生成移动构造 Person(Person p) default; //强制不生成拷贝构造 //Person(const Person p) delete; private: string _name; int _age; };