问题标签 [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 回答
10282 浏览

objective-c - 如何将类名作为参数传递给可可中的对象工厂?

我正在开发一个对象工厂来跟踪一小部分对象。对象可以是不同的类型,但它们都会响应createInstancereset。这些对象不能从公共基类派生,因为其中一些必须从内置的可可类派生,例如NSViewNSWindowController

我希望能够通过简单地将所需的类名传递给我的工厂来创建任何合适对象的实例,如下所示:

makeObjectOfClass:方法看起来像这样:

有没有办法将类名传递给方法,就像我(CLASSNAME)className对上面的参数所做的那样makeObjectOfClass:

为了完整起见,这就是我要管理所有对象的原因。我希望能够通过调用[factory reset];.

0 投票
6 回答
69771 浏览

c++ - 使用非平凡的构造函数初始化联合

我有一个结构,我创建了一个自定义构造函数来将成员初始化为 0。我在较旧的编译器中看到,在发布模式下,如果不将 memset 设置为 0,则不会初始化这些值。

我现在想在联合中使用这个结构,但是因为它有一个非平凡的构造函数而出错。

那么,问题 1。默认编译器实现的构造函数是否保证结构的所有成员都将被初始化为空?非平凡的构造函数只是将所有成员的 memset 设置为 '0' 以确保结构清晰。

问题 2:如果必须在基础结构上指定构造函数,如何实现联合以包含该元素并确保初始化为 0 的基础元素?

0 投票
4 回答
11354 浏览

c# - 如何强制在 C# 中调用基本构造函数?

我有一个 BasePage 类,所有其他页面都来自:

此 BasePage 有一个构造函数,其中包含必须始终运行的代码:

我想强制派生类调用基构造函数,如下所示:

我该如何强制执行(最好在编译时)?

0 投票
3 回答
890 浏览

c# - 从 Constructor 调用工厂以获取“this”的新版本

我可能会倒退……我有一个类似于文档的类和另一个类似于模板的类。它们都继承自同一个基类,我有一个从模板(或从另一个文档,它在基类中的方法)创建新文档的方法。因此,如果我想从模板创建一个新文档,我只需实例化模板并在其上调用 GetNewDoc();

在 Document 类中,我有一个空白构造函数来创建一个新的空白文档,以及另一个接受文档 ID 的构造函数,这样我就可以从数据库中加载文档。但是,我还想要一个带有模板 ID 的构造函数。这样我可以做到

因为模板类已经有能力返回一个文档,我希望构造函数做类似的事情

当然,我不能这样做,因为“this”是只读的——而且感觉很奇怪。我觉得我在这里很愚蠢,所以请随意大喊:)

问题是有问题的对象非常复杂,有几个子对象集合和多个表上的数据库持久性,所以我不想复制太多代码。不过,我想我可以从模板中获取新文档,然后复制字段/属性,因为集合应该很容易遵循 - 这看起来像是重复。

更详细的代码示例:

0 投票
13 回答
727 浏览

c++ - C++ 构造函数编码错误

我刚刚在一些遗留代码中偶然发现了这个错误:

它编译得很好,没有警告 - 但行为不是我想要的,因为构造函数名称拼写错误。这本身会产生关于“函数不返回值”的警告,但我想我是在自动驾驶仪上并添加了一个“void”返回类型来“修复”这个问题。

现在,错误修复很容易,但我的问题是:-

我可以使用哪些技术来防止此类错误再次发生?

一些语言需要一个明确的“构造函数”关键字,这应该使这个问题显而易见。单元测试,显然也应该抓住它。我还可以做些什么?

0 投票
10 回答
53363 浏览

.net - 您是否使用 TestInitialize 或测试类构造函数来准备每个测试?为什么?

这个问题与使用 MSTest 在 Visual Studio 中进行单元测试有关(这很重要,因为 MSTest 的执行顺序)。标记为 [TestInitialize] 的方法和测试类构造函数都将在每个测试方法之前运行。

所以,问题是,你倾向于在这些领域做什么?您是否避免在其中任何一个中进行某些活动?你的理由是什么:风格、技术、迷信?

0 投票
8 回答
24037 浏览

c# - 在 C# 中调用重写的构造函数和基构造函数

我有两个类,Foo 和 Bar,它们有这样的构造函数:

现在我想为 Bar 引入一个采用 int 的构造函数,但我希望 Bar() 中发生的内容与 Foo(int) 中的内容一样运行。像这样的东西:

有没有办法在 C# 中做到这一点?到目前为止,我最好的方法是将 Bar() 完成的工作放入一个函数中,该函数也由 Bar(int) 调用,但这很不优雅。

0 投票
5 回答
402 浏览

c++ - 成员如何知道它是在哪个类实例中构造的?

x 的构造函数是否有一种优雅的方法可以隐式地知道它正在构造的 C 实例是什么?


我已经用一些肮脏的不优雅的机器实现了这种行为。我的 sqlite3 包装器需要这个。我不喜欢我见过的所有包装器,它们的 API IMO 丑陋且不方便。我想要这样的东西:

code>

I want to clarify the fact - it is a part of the working code. You can do this in C++. I just want to do it in a more nice way.


I've found a way to get rid of unlock and try block. I've remembered there is such a thing as thread local storage. Now I can write constructor as simple as that:


to dribeas: My objective is to avoid redundant and tedious typing. Without some tricks behind the scene I will have to type for each Field and Param:

它是多余的、丑陋的和不方便的。例如,如果我必须在 SELECT 中间添加新字段,我将不得不重写所有列号。关于您的帖子的一些注释:

  1. 字段和参数由它们的默认构造函数初始化。
  2. 构造函数中初始化程序的顺序无关紧要。字段始终按照其声明的顺序进行初始化。我已经使用这个事实来追踪字段的列索引
  3. 首先构造基类。因此,当构造字段时,Recordset 中的内部字段列表已准备好由 Filed 默认构造函数使用。
  4. 我不能在这里使用 RAII。我需要在 Recorset 构造函数中获取锁,并在构造所有字段后在 TestRecordset 构造函数中强制释放它。
0 投票
7 回答
3873 浏览

c# - : C# 构造函数中的 this(foo) 语法?

时不时地,我会遇到以前见过但从未使用过的语法。这是其中之一。

有人可以在 C# 构造方法之后解释 ":this" 或 ":base" 的目的吗?

例如:

我的直觉是它用于将默认参数映射到另一个构造函数方法。

0 投票
4 回答
619 浏览

php - 如何在 Php5 中重载构造函数?

我有两个构造函数:

但这不起作用?怎么了,这个版本的PHP不应该是OO吗?(我刚从 PHP4 迁移过来)