问题标签 [class-constructors]

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 投票
2 回答
453 浏览

vb.net - 在属性调用期间填充属性对象

我想知道这种方法是否正确,或者它们是否是更好的方法。

我有一个基本上是一个 Person 类,它有许多其他类作为变量,每个自定义类都通过传递 Person ID 来实例化,然后该类使用该 ID 检索它需要的数据。我通过属性公开变量类。

目前,当我创建 Person 类的实例时,我正在实例化变量类,并且这些变量的大量意味着实例化 Person 类所需的时间正在增长。我的想法是将变量类的实例化移动到 Propertie 声明,然后在此处使用 If 语句来实例化它(如果尚未完成)。

正如我上面所说,这种方法是正确的还是他们这样做的更好方法?

谢谢

0 投票
1 回答
80 浏览

.net - 在类初始化期间响应应用程序终止事件

在启动我的应用程序时,我有几个类需要读取某些文件才能创建一组默认数据。

这样做的逻辑位置(对我来说)是在共享类构造函数中;如果读取默认文件失败,这个想法是抛出一个类级别的事件。不幸的是,这不起作用,因为试图访问这样的事件,为了将处理程序附加到它,在事件附加之前触发类构造函数。在失败的情况下,构造函数启动,触发失败事件,构造函数完成,然后在事件触发附加事件处理程序。

我能想到的唯一其他解决方案是给类一个“typeInitialisedSuccessfully”布尔属性,并在每个调用周围放置一个 try/catch 块以构造类的实例,这对我来说似乎不必要地笨拙。

有人可以提出更优雅的解决方案吗?

编辑:因为这是一个基本类,在我们几乎所有的软件工具中都以一种或另一种形式使用,我非常希望有一个解决方案可以通知未来的程序员需要调用类型初始化程序,这就是我最初去的原因共享构造函数作为解决方案。

0 投票
6 回答
2216 浏览

java - 返回静态初始化器

这不是有效的代码:

这是一个愚蠢的例子,但在静态类构造函数中我们不能return;。为什么?这有充分的理由吗?有人对此了解更多吗?

所以我应该这样做的原因return是结束那里的建设。

谢谢

0 投票
3 回答
377 浏览

c# - 为什么我被迫在未使用的构造函数中引用类型?

假设我有一个类 ( ClassA),其中包含一个调用另一个类的构造函数的方法,如下所示:

该类ClassB如下所示:

...而且ClassC更简单:

如果我将这些类放在它们自己的程序集中并编译整个解决方案,我不会收到任何错误。但是如果我用这个替换 using 语句:

[mynamespace].ClassC我收到一个编译错误,要求我添加对in的引用ClassA。由于我根本没有调用ClassB(ClassC myC),这对我来说毫无意义 - 为什么我必须包含其他构造函数的类型,而不管我是否使用它们?如果ClassC包含在许可或难以获取的程序集中怎么办?这是开发人员应该避免的不良设计示例,还是我在这里遗漏了什么?

0 投票
2 回答
1443 浏览

c++ - 初始化模板类成员的问题

我的代码无法编译。下面是我的代码

我收到此错误:

error: uninitialized member 'TemplateClass<int>::constMember' with 'const' type 'const int'

我认为构造函数用于初始化数据成员。怎么了????

0 投票
4 回答
175 浏览

php - PHP 中的 jQuery 样式构造函数

有没有办法以类似于 jQuery 的方式实例化一个新的 PHP 对象?我说的是在创建对象时分配可变数量的参数。例如,我知道我可以这样做:

但我想只设置其中的一些。所以像:

这更像是在 jQuery 和其他框架中如何完成的。这是内置在 PHP 中的吗?有没有办法做到这一点?还是我应该避免它的原因?

0 投票
3 回答
1253 浏览

delphi - 在该类构造函数中完成类注册时未调用类构造函数

我正在编写一个基于 TDictionary 的简单依赖注入/控制系统反转,该 TDictionary 持有抽象类引用及其各自的实现类。

我的目标是:

  • 避免按类型直接实例化(显然)。
  • 在 dpr 中包含一个类的单元应该足以让它注册并可以通过 di/ioc 系统进行选择和实例化。
  • 仅在实现部分声明具体的实现类。
  • 使用类构造函数而不是初始化部分。

顺便说一句,我知道使用类构造函数来利用智能链接并希望包含一个足以使类可用的单元正在互相击败。出于其他原因,我也想使用类构造函数而不是初始化部分。而且我想将所有类初始化/注册代码放在一起,而不必在类构造函数和初始化部分之间拆分它。

问题

我希望将类注册到工厂中以在类构造函数中。不幸的是,编译器并不认为仅通过在其自己的类构造函数中使用其类型来“触及”该类。

当我将注册函数放在初始化部分时,编译器确实认为该类被触摸并调用类构造函数。但这违背了我将所有类初始化代码保留在类构造函数中的练习目标。

两个问题

  • 编译器是否应该考虑在其自己的类构造函数中使用该类“接触类”,还是期望编译器做太多?
  • 是否有人对我如何在不使用初始化部分的情况下仍然实现目标有任何聪明的想法?

例子

应用程序中使用的抽象类:

TThisApplication 的具体实现类(在实现部分声明!)

获取 TThisApplication 实例的函数:

这目前被编码在一个单独的函数中,但它可以移动到工厂。

完整的示例代码

如果有人想试验,我有我的测试项目的完整代码:http ://www.bjsoftware.com/delphistuff/stackoverdlow/classconstructors.zip

邮编内容:

  • 4 个项目都使用相同的源文件,仅在条件定义上有所不同(这就是为什么还包括 dproj 的原因)
  • 4个源文件
  • groupproj 及其 dsk 与所有 4 个项目
  • RunTestApps.cmd 运行所有 4 个项目
  • Results.txt 与我运行 RunTestApps.cmd 的输出
  • WriteUp.txt 与此问题的文本

请记住,在任何时候您都需要执行“构建所有项目”,因为所有 dcu 和 exe 都将进入源目录,否则您将面临很多错误和/或混淆,因为 exe 不是做它的名字所表明的。

0 投票
5 回答
178 浏览

c++ - C ++模板化类和构造函数中的init

我有一个模板类, Foo :

然后我有另一个名为 Attr 的模板类,它是我的 Foo 类的一个属性,它以 Foo 类本身作为模板参数。

我想在构造函数中初始化 _attr(Attr 类型),将模板中的第一个参数转换为 SomeType。

Foo 构造函数实现:

这不会编译:

错误:“)”标记之前的预期主表达式

该错误指的是 Foo 构造函数实现中的转换线,好像 SomeType 未被识别。

我现在有一个实例,但仍然遇到同样的错误。

0 投票
5 回答
1517 浏览

c++ - “this”不能用作函数

在 C++ 中,我试图模拟 Java 如何处理对其构造函数的调用。在我的 Java 代码中,如果我有 2 个不同的构造函数并且想要一个调用另一个,我只需使用this关键字。例子:

使用此代码,通过使用 Constructor2 实例化一个对象(传入单个字符串),它将只调用 Constructor1。这在 Java 中效果很好,但我怎样才能在 C++ 中获得类似的功能?当我使用this关键字时,它会抱怨并告诉我'this' cannot be used as a function

0 投票
2 回答
2134 浏览

delphi - Delphi XE:在使用泛型的类中不会调用类构造函数

考虑以下示例(我使用的是 Delphi XE):

类构造函数永远不会被调用,因此不会打印“类创建”行。但是,如果我删除泛化并制作TTestClass<T>成标准类TTestClass,一切都会按预期工作。

我错过了泛型的一些东西吗?或者它根本不起作用?

对此的任何想法都会受到赞赏!

谢谢,--斯特凡--