问题标签 [default-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9103 浏览

c++ - 编译器生成的构造函数

这只是一个快速的问题,可以正确理解当您使用这样的构造函数创建类时会发生什么:

我知道没有生成默认构造函数,因为它已经定义但是是由编译器生成的复制和赋值构造函数,或者换句话说,我是否需要声明一个私有复制构造函数和一个私有赋值运算符以防止这种情况发生?

0 投票
7 回答
90361 浏览

c++ - 默认构造函数是否初始化内置类型?

默认构造函数(由编译器创建)是否初始化内置类型?

0 投票
3 回答
377 浏览

c#-3.0 - 为什么在 C# 3.0 中,当我们重载指定类的构造函数时,我们应该在类体中编写默认构造函数?

为什么在 C# 3.0 中,当我们重载指定类的构造函数时,我们应该在类体中编写默认构造函数?据我所知,没有必要这样做。

谢谢

0 投票
2 回答
15034 浏览

c++ - 调用基类构造函数

在下面的程序中,是行

正确/允许?也就是说,它是否遵循 ANSI 规则?

0 投票
3 回答
620 浏览

c++ - 如何让编译器在 C++ 中创建默认构造函数?

即使我提供自己的显式构造函数,有没有办法让编译器创建默认构造函数?

有时我发现它们非常有用,并且发现编写例如复制构造函数是浪费时间,尤其是对于大型类。

0 投票
2 回答
23334 浏览

c++ - 显式默认构造函数的目的

我最近注意到 C++0x 中的一个类需要显式的默认构造函数。但是,我没有想出一个可以隐式调用默认构造函数的场景。这似乎是一个毫无意义的说明符。我想也许它会Class c;不赞成,Class c = Class();但情况似乎并非如此。

来自 C++0x FCD 的一些相关引用,因为我更容易导航[类似的文本存在于 C++03 中,如果不在同一个地方]

12.3.1.3 [class.conv.ctor]

默认构造函数可以是显式构造函数;这样的构造函数将用于执行默认初始化或值初始化 (8.5)。

它继续提供一个显式默认构造函数的示例,但它只是模仿了我上面提供的示例。

8.5.6 [decl.init]

默认初始化 T 类型的对象意味着:

— 如果 T 是(可能是 cv 限定的)类类型(第 9 条),则调用 T 的默认构造函数(如果 T 没有可访问的默认构造函数,则初始化是非良构的);

8.5.7 [decl.init]

对 T 类型的对象进行值初始化意味着:

— 如果 T 是具有用户提供的构造函数(12.1)的(可能是 cv 限定的)类类型(第 9 条),则调用 T 的默认构造函数(如果 T 没有可访问的默认构造函数,则初始化是非良构的);

在这两种情况下,标准都要求调用默认构造函数。但是,如果默认构造函数是非显式的,就会发生这种情况。为了完整起见:

8.5.11 [decl.init]

如果没有为对象指定初始化器,则该对象是默认初始化的;

据我所知,这只会导致没有数据的转换。这没有任何意义。我能想到的最好的方法如下:

但显然这不是 C++ 处理默认参数的方式。还有什么会使explicit Class();行为与 不同Class();

产生这个问题的具体例子是std::function[20.8.14.2 func.wrap.func]。它需要几个转换构造函数,其中没有一个被标记为显式,但默认构造函数是。

0 投票
3 回答
4543 浏览

c# - System.Drawing.Graphics 的默认构造函数是如何去掉的?

当我尝试创建 Graphics 的对象时,为什么以下操作不起作用?

(我知道我可以创建一个private System.Windows.Forms.Panel Obj;然后CreateGraphics()如果我想要它工作的话)

我试图为 Graphics 找到一个自定义构造函数,但我找不到。微软在哪里定义它,或者它是如何阻止它的?

0 投票
6 回答
21421 浏览

java - 为什么我们需要在 Java 中使用默认的无参数构造函数?

为什么我们需要在许多 Java 相关 API 中使用默认的无参数构造函数?就像一般规则一样,所有 java bean 类或实体类(JPA 等)或 JAX-WS 实现类都需要显式的无参数构造函数。

如果默认情况下 Java 提供了无参数构造函数,那么为什么这些标准中的大多数都需要显式构造函数?

0 投票
1 回答
1011 浏览

c++ - 在 C++ 中是否总是需要调用基类构造函数?

假设我有一些类C,我从它继承并命名这个类D。我是否总是必须调用C的默认构造函数,如下例所示:

请注意,C只有默认构造函数。我必须从 D 调用它吗?我不知道如何找到这个。

谢谢,博达赛多。

0 投票
3 回答
1619 浏览

c# - 在 C# 中使用反射检测编译器生成的默认构造函数

我的目标是 .NET 3.5 SP1,我正在使用CommentChecker来验证我的 XML 文档,一切正常,直到我进入这样的课程:

据我了解,在上面的示例中,编译器为我的类生成了一个默认构造函数。问题在于 CommentChecker 会生成警告,告诉我构造函数缺少注释。

我试图修改程序以检测这种特殊情况并忽略它,但我被卡住了,我已经尝试过IsDefined(typeof(CompilerGeneratedAttribute), true)但没有奏效。

简而言之,如何使用反射检测默认构造函数?