如果我使用参数显式定义构造函数,是否仍会创建默认构造函数?

use*_*198 1 c++ constructor default

如果我显式定义带有参数但没有默认构造函数的构造函数,是否仍会创建默认构造函数?

谢谢!

Bat*_*eba 7

不,在这种情况下,您必须显式提供默认构造函数.

虽然你可以(从C++ 11开始),对于一个类Foo,使用语法

Foo() = default;

在类声明中重新引入编译器生成的默认构造函数.(注意,您需要将其放在public精确等效的部分中).

或者,如果为所有构造函数参数提供默认参数,则它将成为默认构造函数.