如果我使用参数显式定义构造函数但没有默认构造函数,是否仍会创建默认构造函数?
谢谢!
答案 0 :(得分:7)
不,在这种情况下你必须明确提供默认构造函数。
虽然你可以(从C ++ 11开始),对于一个类Foo
,使用语法
Foo() = default;
public
部分中以获得完全等效)。
或者,如果为所有构造函数参数提供默认参数,那么将成为默认构造函数。
答案 1 :(得分:4)
不,它不会,这就是你希望类用户明确提供参数的时候。
但是,如果对参数使用默认值,它将成为默认构造函数
class Foo
{
Foo(bool flag=false); // not a default constructor, but acts the same
};
答案 2 :(得分:0)
没有。如果定义构造函数,则仅存在您定义的构造函数。如果要保留默认构造函数,则必须重新定义它。
class MyClass
{
MyClass(){};
.
.
.
};