问题标签 [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 投票
5 回答
1749 浏览

c++ - C++:默认复制构造函数是否受到其他构造函数和析构函数的影响?

众所周知,如果声明了任何构造函数(包括复制构造函数),则不会隐式创建默认构造函数(不带参数的构造函数)。默认复制构造函数(执行对象浅拷贝的构造函数)也会发生同样的情况吗?此外,析构函数的存在是否会影响这一点?

0 投票
9 回答
50605 浏览

c++ - C++ 初始化非静态成员数组

我正在编辑一些使用如下定义的全局数组的旧 C++ 代码:

我想让所有这些数组成为下面定义的 Robot 类的私有成员。但是,C++ 编译器不允许我在声明数据成员时对其进行初始化。

我想在 Robot() 构造函数中初始化这六个数组的元素。除了一个一个地分配每个元素之外,还有什么方法可以做到这一点?

0 投票
1 回答
818 浏览

scjp - SCJP Sierra Bates 第 2 章问题 2 默认构造函数调用

背景信息 我对 Sierra & Bates, SCJP v6 书中的问题有疑问。即第2章问题2。给出的答案是“编译失败”。但是,当我在 neBeans 中尝试此操作时,代码编译并运行没有错误。它还返回了“D”的输出,这不是替代方案之一。在各种论坛中,关于是否需要插入 super() 等,关于这个问题还有一些其他的讨论。但是似乎没有人认识到它可以编译。

这一点非常重要,因为我正在为 SCJP 学习,我发现并非所有问题都可以在 netBeans 中复制。在这种情况下,我可能会学会相信某些代码在(出于考试目的)不起作用时会起作用。

包含代码以方便参考。

0 投票
4 回答
1277 浏览

java - 使用“默认”HashMap 调用不同的构造函数

我在 MyClass 类上运行了很多测试用例,使用它的默认构造函数:MyClass()。

现在 MyClass 的要求发生了变化,用户可以提供一个 HashMap 来指示一些对。现在 MyClass 需要至少有一对,如果其中一个为空,则抛出异常。

我希望创建另一个默认构造函数以避免重写所有测试方法,例如:

现在这不起作用,因为我必须先调用另一个构造函数,所以我想写一些方法

并使用它来调用其他构造函数,如下所示:

但这在我看来不是很好的风格,所以我希望你能告诉我做这种事情的正确方法是什么!

0 投票
4 回答
892 浏览

c++ - 是否为 C++ 中的默认构造函数创建了汇编代码

如果我没有在 C++ 中的类或任何其他构造函数中定义默认构造函数,我已经读到编译器会为您创建默认构造函数。但是我创建了一个测试类,将其编译为汇编代码并检查发现没有创建任何类型的代码。
有人可以澄清默认构​​造函数的代码是如何创建的,还是首先创建的?

0 投票
2 回答
5883 浏览

c# - 自定义控件构造函数

请原谅我讲了这么长的故事,但我认为这个问题值得。

我有一个我制作的自定义控件,它有自己的重写OnPaintBackground方法,该方法使用成员BrushPen. 我是这样创建它的:

构造函数只是默认的,添加了一些用于创建画笔和钢笔以及背景的东西。

但是,我认为有一个带有父面板的构造函数会更好(因为我的控件不能在没有父面板的情况下使用)所以我向构造函数添加了一个参数:

然后当我运行我的程序时,第一个控件被创建并绘制得很好。然后对于第一个之后的所有控件,我得到了第一次机会异常,并且我的控件System.Drawing.dll所有面板的背景都是Winforms 在找不到图像或其他东西时显示的红色。请记住,要创建的控件的第一个实例运行良好。X

因此,我将我的 Visual Studio 设置为在引发任何异常时中断,而不是仅仅记录它,并且它在我的覆盖内的一行中中断OnPaintBackground,如下所示:

有了信息Argument cannot be null。所以我查看了调试器窗口,发现不仅是bPen空的,而且我所有的画笔和钢笔以及所有东西都是空的,即使正在调用构造函数(使用 MessageBox 验证)!

我最终解决了这个问题,方法是从默认构造函数中删除参数并添加另一个带有参数的单独构造函数,并从该构造函数调用默认 ctor。但是,我想知道,对于没有默认构造函数的控件,C# 有什么让它们无法创建像Pens 这样的东西?

0 投票
11 回答
830 浏览

c++ - Why is the Compiler-Emitted C++ Default Constructor "bad"?

Could someone please explain what is meant by the following?

You must define a default constructor if your class defines member variables and has no other constructors. Otherwise the compiler will do it for you, badly.

What are they referring to as "badly"?

0 投票
2 回答
7456 浏览

wpf - 在 XAML 中命名没有默认构造函数的用户控件

我有一个没有无参数构造函数的用户控件;让我们称之为WithoutDefaultConstructor。我想将WithoutDefaultConstructor调用myControl插入另一个控件(称为)的 XAML 代码中MainWindow。但是,我收到此编译器错误:

“WithoutDefaultConstructor”类型不能有 Name 属性。值类型和没有默认构造函数的类型可以用作 ResourceDictionary 中的项。

如何在不添加无参数构造函数的情况下解决此问题WithoutDefaultConstructor

以下是 的内容MainWindow.xaml

以下是 的内容WithoutDefaultConstructor.xaml.cs

0 投票
2 回答
1559 浏览

java - 我无法得到的非常简单的构造函数问题。爪哇

  • 创建一个带有打印消息的默认构造函数(不带参数的构造函数)的类。在您的 main() 方法中,创建此类的一个对象。
  • 从步骤 1 开始,将重载的构造函数添加到您的代码中。新的构造函数应采用 String 参数并将其与您的消息一起打印。修改 main() 以便它使用新的构造函数创建该类的第二个对象。

所以第二部分对我来说就像用另一种语言写的一样,我完全不知道该怎么做,第一部分是我到目前为止得到的:

当我试图打印该消息时,它给了我一个错误。我很困惑,我不是要你以任何方式为我做我的实验室,但我对此感到很困惑,它已经失控了。

0 投票
1 回答
3118 浏览

c++ - 默认构造一个整数数组会对其进行零初始化吗?

如果我有一个带有数组成员的结构,并且我在结构的构造函数中显式调用了数组的默认构造函数,那么元素会被默认构造吗?(在整数数组的情况下,这意味着初始化为零)。

对 gcc 的快速测试表明情况确实如此,但我想确认我可以依赖这种行为。

(我注意到,如果我没有在结构构造函数中显式默认构造数组,则数组元素具有随机值。)