我看到了一些代码here。
有一个类具有私有默认构造函数,其中包含空主体和参数化构造函数。 代码注释表示默认构造函数是私有的“因此不可以创建没有指定属性的对象”[属性由类数据成员表示]。因此,没有必要明确定义私有默认构造函数,因为它无法使用!
一旦我们声明了参数化构造函数,编译器就不会隐式提供默认构造函数!因此,没有办法创建没有参数传递给不存在的构造函数的对象。
我的问题是为什么我们需要在这种情况下声明默认构造函数 at all ?
答案 0 :(得分:5)
你完全正确。 只要有自定义构造函数,就不会创建默认构造函数。
因此,在这种情况下,您不需要声明默认构造函数。
另见§12.1/ 5
类
X
的默认构造函数是类X
的构造函数,可以在不带参数的情况下调用。如果类X
没有用户声明的构造函数,则隐式声明没有参数的构造函数 违约(8.4)。 [...]
答案 1 :(得分:1)
是的,作者对默认构造函数的工作方式不正确。他可能会将它与复制构造函数混淆,即使在他的情况下也会自动创建。