C++ 默认构造函数具有以下特点:
- 当类中没有定义任何构造函数时,编译器会自动生成一个默认构造函数。
- 默认构造函数没有参数,即它的参数列表为空。
- 默认构造函数会初始化类成员变量为它们的默认值。对于内置数据类型(如 int、float、double 等),默认值为 0 或 0.0;对于指针和引用,默认值为 nullptr 或 null 引用;对于类类型,默认值为该类型的默认构造值。
- 如果类中有常量成员变量,那么编译器生成的默认构造函数不会初始化这些常量成员变量。这是因为常量成员变量必须在构造函数的初始化列表中显式初始化。
- 如果类中有引用成员变量,那么编译器生成的默认构造函数会初始化这个引用成员变量为它所引用的对象的默认构造值。但是,如果这个引用成员变量没有被初始化,那么它会导致编译错误。
- 如果类中有自定义的构造函数,那么编译器不会生成默认构造函数。这是因为自定义的构造函数已经提供了对象的初始化方式,编译器不再自动生成默认构造函数。
- 默认构造函数可以被显式调用,以便在创建对象时执行特定的初始化操作。
- 如果类中定义了其他构造函数,编译器不会自动生成默认构造函数,除非显式地定义一个不带参数的构造函数。
总之,C++ 默认构造函数是一种特殊的构造函数,它在类中没有定义任何构造函数时自动生成,用于初始化类成员变量为它们的默认值。