繁体   English   中英

空体的C ++私有默认构造函数

[英]C++ Private Default Constructor with Empty Body

我在这里看到了一些代码。

有一个带有私有默认构造函数(带有空主体)和参数化构造函数的类。 代码评论说,默认的构造函数作出私有“因此,它不可能建立,如果不指定属性的对象” [属性是由类的数据成员代表。 因此,显式定义私有默认构造函数是没有用的,因为不能使用它!

一旦声明了参数化构造函数,编译器将不会隐式提供默认构造函数! 因此,将无法创建没有参数传递给不存在的构造函数的对象。

我的问题是为什么我们需要在这种情况下,申报了默认的构造函数呢

你是完全正确的。 一旦有自定义构造函数,就不会创建默认构造函数。

因此,在这种情况下,您无需声明默认构造函数。

另请参阅§12.1 / 5

对于A类默认构造函数X是类的构造函数X ,可以不带参数调用。 如果类X没有用户声明的构造函数,则将不带参数的构造函数隐式声明为默认值(8.4)。 [...]

是的,关于默认构造函数如何工作的作者是不正确的。 他可能将其与即使在他的情况下也会自动创建的副本构造函数混淆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM