关于隐式构造函数的创建?

cod*_*ddy 3 c++ constructor

很清楚编译器会隐式创建一个构造函数,但是如果我们有这样的代码:

class A
{
    public:
       A(int = 0) {}

};
Run Code Online (Sandbox Code Playgroud)

此构造函数是默认值和转换运算符.

题:

编译器还会生成"空"默认构造函数A() {}吗?

Luc*_*ore 10

不可以.默认构造函数是没有带默认值的参数或参数的构造函数.

所以,基本上,您已经定义了默认构造函数.

12.1.5来自C++03各州的部分:

类X的默认构造函数是类X的构造函数,可以在没有参数的情况下调用.[...]

由于您可以在没有参数的情况下调用构造函数,因此它是默认构造函数.因此,编译器不需要声明另一个.