1. 默认构造函数无参构造定义无参数或所有参数都带默认值的构造。class A { public: // 默认构造 A() { cout 默认构造; } // 等价默认构造全部参数有默认值 A(int x 0) {} };自动生成规则类未手写任何构造时编译器自动生成空默认构造 只要写了任意构造编译器不再生成默认构造。2. 有参构造函数转换构造带参数用于初始化成员单参数构造默认具备隐式转换能力。class A { public: A(int a) { num a; } int num; }; A obj 10; // 隐式转换调用A(int) // 加 explicit 禁止隐式转换 explicit A(int a) {} A obj 10; // 编译报错3. 拷贝构造函数参数为同类 const 左值引用用于用已有对象初始化新对象。A(const A other) { num other.num; cout 拷贝构造; }编译器自动生成未手写拷贝构造时编译器生成浅拷贝版本。4. 移动构造函数C11参数为同类右值引用 T接管临时对象资源避免拷贝开销。A(A other) noexcept { num std::move(other.num); cout 移动构造; }触发临时对象、std::move(obj)传入初始化新对象。 编译器仅在无自定义拷贝 / 赋值 / 析构时自动生成。5. 委托构造函数C11一个构造函数调用本类其他构造复用初始化逻辑。class A { public: A() : A(0) { cout 无参委托; } A(int x) { num x; } int num; };限制初始化列表只能委托一个构造不能循环委托。6. 继承场景子类构造调用父类构造子类构造函数初始化列表显式调用父类构造不写则默认调用父类无参构造。class Base { public: Base(int x) {} }; class Son : Base { public: // 必须显式调用Base无默认构造 Son() : Base(10) {} };7. 聚合初始化特殊构造语法无用户自定义构造时生效类无自定义构造、无 private/protected 成员可大括号直接初始化struct Data { int a; string b; }; Data d{10, test};默认构造A()拷贝构造A(const A)移动构造A(A)拷贝赋值operator(const A)移动赋值operator(A)特殊成员函数编译器不生成或废弃的条件生成的额外要求默认构造手写了任何构造函数含拷贝/移动/有参父类和成员有默认构造析构函数手写了析构函数无拷贝构造手写了拷贝构造 / 手写了移动操作或析构成员必须可拷贝拷贝赋值手写了拷贝赋值 / 手写了移动操作或析构成员必须可拷贝赋值移动构造手写了移动构造 / 拷贝构造 / 拷贝赋值 / 析构任意一个成员必须全部支持移动移动赋值手写了移动赋值 / 拷贝构造 / 拷贝赋值 / 析构任意一个成员必须全部支持移动赋值