如果我的类中有带参数的构造函数,我们需要提供一个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构造函数.因此,即使是编译器提供的隐式构造函数也会在这种情况下得到抑制.
请提供一些澄清/想法.
没有参数的构造函数或所有参数都具有默认值的构造函数是默认的construcor.
如果您提供了编译器,编译器将不会生成一个.
如果对您的类型没有意义,则不必提供默认构造函数.当然,这禁止在需要默认构造函数的地方使用您的类,但这种使用可能也没有意义.