C++中的默认构造函数

mun*_*ish 1 c++ constructor

如果我的类中有带参数的构造函数,我们需要提供一个do-nothing构造函数,如:

1)

class A
{
  A(){};  //To satisfy the compiler
  //some constructors with parameter
};
Run Code Online (Sandbox Code Playgroud)

只是为了满足编译器.

现在,如果我的类有一个默认参数,如:

2)

class A
{
//A(){} can't be used expilcilty or implicilty
A(int = 0);
};
A a;
Run Code Online (Sandbox Code Playgroud)

调用A ::()或A :: A(int = 0)会产生歧义,所以我们不能在第二种情况下提供任何do-nothing构造函数.因此,即使是编译器提供的隐式构造函数也会在这种情况下得到抑制.

请提供一些澄清/想法.

Bo *_*son 6

没有参数的构造函数或所有参数都具有默认值的构造函数默认的construcor.

如果您提供了编译器,编译器将不会生成一个.

如果对您的类型没有意义,则不必提供默认构造函数.当然,这禁止在需要默认构造函数的地方使用您的类,但这种使用可能也没有意义.