问题标签 [constructor-overloading]

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 投票
1 回答
104 浏览

c# - 构造函数重载时重用代码?

所以起初,我有以下构造函数。

然后我意识到,对于某些对象,我还需要三个参数。所以我用另外三个参数重载了构造函数,复制粘贴代码并分配了额外的参数。

如您所见,除了三个额外的参数(一个布尔值、一个信号量和一个缓冲区)之外,这两个构造函数的实现大部分相同。我想知道的是,与其在重载的构造函数中编写所有代码,有没有办法引用第一个构造函数并且只需要为额外的参数编写额外的代码?

我说的是在继承的类中使用“Super()”方法之类的东西(我研究了一下,这里不能这样做,因为它们在同一个类中)。

谢谢你。

0 投票
2 回答
1762 浏览

c# - 简化具有多个可初始化字段的类的构造函数

我目前有以下问题:
我有一个包含 3 个不同字段的类

  • 枚举 x
  • ActiveDirectory 用户 y
  • 自定义类 z

可以通过传递字符串或枚举对象来初始化枚举。ADUser 可以通过传递字符串 (LoginName) 或用户本身来初始化,而 CustomClass 可以通过传递字符串、int 或对象来初始化。

现在我想初始化类以传递所有不同的组合,例如

有没有办法在不输入所有 12 种可能性(Enum-2 * ADUser-2 * CClass-3 = 12)的情况下简化构造函数?

我想到了链式构造函数,我最终也得到了 12 个构造函数,但也考虑过只在每个参数上传递 c# 对象并对其进行强制转换并对其进行处理,但我认为这只是一个肮脏的解决方法?

编辑

该类包含在库中,因此可以在内部使用,也可以在公共使用。对于内部使用,传递对象的具体版本没有问题。但是如果我在其他解决方案中公开使用它,这些解决方案只能引用字符串或整数值。因此,该类应该能够在初始化时“获取”这些值并转换它们,因为它可以访问所有真实对象。
也许这可以稍微澄清一下问题。

这里有一些更改名称的代码片段:

0 投票
1 回答
225 浏览

c++ - 为什么(已删除)复制构造函数优于隐式转换?

考虑下面的代码:

该类Bar有一个用户定义的转换运算符 to Foo,它接受Bar&s。但是,在 的最后一行中main,我本来希望Foo f1将其转换为Bar然后传递给Foo(const Bar&). 但是,仅考虑已删除的构造函数Foo(const Foo&) = delete;。我知道这个构造函数是一个更好的匹配,但为什么也不是Foo(const Bar&)重载集中,为什么编译器不执行隐式转换?

0 投票
5 回答
2043 浏览

java - Java - 在重载的构造函数调用中创建 HashMap

我有一个非常简单的问题,但到目前为止找不到任何东西。

我正在尝试创建两个类构造函数。
第一个构造函数获取 2 个字符串和一个 HashMap 并初始化类变量。

第二个构造函数应该只获取 2 个字符串并创建一个“默认”-HashMap。

通常你只是this()用里面的默认值调用,但我找不到用HashMap.

Eclipse 标记一个错误:

类型不匹配:无法转换StringHashMap<String,String>

否则this()-call 不能是函数中的第一条语句。

任何想法如何解决这个问题?

最坏的情况是我不得不复制代码,但我想知道是否没有更好的方法。

0 投票
1 回答
62 浏览

java - 奇怪的类型推断行为

我有一个非常复杂的类,它获取一个泛型值、一个功能接口和一些泛型类型的子类。现在我注意到一些与类型推断相关的奇怪行为。看看这段代码:

行 Test t = new Test(...); 由于以下错误无法编译:

现在我发现了两种不同的可能性来让这段代码工作:
1)为功能接口参数设置显式类型

2)或删除重载的构造函数。

我真的不明白编译器的问题以及为什么我的解决方案有效。有人可以解释一下这里发生了什么。

0 投票
1 回答
51 浏览

c# - 重载的构造函数c#

我里面有 1 个命名空间(DXApplication5)和 2 个类。我正在尝试用一个类刷新gridview。我在下面的代码中做错了什么?提前谢谢,

错误:“DXApplication5.grid_refresh.grid_refresh(DXApplication5.Form1)”的最佳重载方法匹配有一些无效参数

参数 1:无法从 'DevExpress.XtraEditors.XtraForm' 转换为 'DXApplication5.Form1'

//从另一个类调用

0 投票
2 回答
124 浏览

java - 我在我的 java 程序中收到一个错误:类 Try1 中的构造函数 Try1 不能应用于给定类型;

我正在尝试在 java 中实现构造函数重载。我认为一切都很完美,但它显示了这个错误:

Main.java:28:错误:类 Tryme 中的构造函数 Tryme 不能应用于给定类型;

这是我的代码:

0 投票
1 回答
578 浏览

c++ - 编译器无法识别重载的构造函数 C++

我正在尝试为基本编译器创建符号表。我的 Symbol 类中有 2 个构造函数——一个接受 4 个参数,一个接受 5 个参数。我有一个简单的 main 函数,它尝试创建一个 Symbol 对象,接受 4 个参数,然后另一个接受 5 个参数。编译器抱怨符号 b 有 5 个参数:

我不确定为什么它说没有匹配的函数可以调用,因为它在那里。虽然我不确定“const Symbol::string&”是否与“std::string&”不同导致了一些问题,或者如果是这样的话如何解决。

这是主要的:

符号.h:

符号.cpp

0 投票
0 回答
670 浏览

c# - C# 方法重载 - 具有派生类型的参数类型重载

在以下情况下,C# 确定要使用哪个构造函数(或方法)的重载的规则是什么:

  • 重载仅因参数类型而异
  • 重载都是同一类型层次结构的一部分

考虑以下:

  • 从 List 派生的自定义类型(这里只是部分表示;假设为了练习,该类向 List 添加了一些元数据概念):

    /li>
  • 具有不同构造函数的类采用不同级别的类层次结构:

    /li>

下面的代码中会调用哪个构造函数,重载是如何解决的?:

作为第二个问题,构造函数的重载规则是否与其他实例方法相同?如果我有这门课:

我打电话给

行为与构造函数相同还是不同?而且,如果 DoSomethingClass 是一个实例类型,

有什么不同吗?

到目前为止,我的观察是传递给构造函数/方法的引用类型完全决定了选择哪个构造函数。即包装在 IEnumerable 中的 CustomList 重载到 IEnumerable 构造函数。我假设总是如此,还是他们的例外是正确的?

0 投票
1 回答
87 浏览

c++ - 从新重载调用构造函数和直接调用构造函数有什么区别?

考虑到下面的代码,当我打电话时,new(name, 10) Foo()我希望按以下顺序发生以下情况:

  1. void* operator new(std::size_t size, QString name, int id)被调用的重载
  2. Foo(QString name, int id)此时从上面重载调用的构造函数,为我的类分配了足够的内存,因此我可以安全地执行和设置:

    姓名(姓名),身份证(身份证)

  3. 调用Foo()空构造函数并且什么都不做。只有在这里因为必须执行。

但我错过了一些东西。成员名称值为空。有人会解释什么以及如何解决吗?

编码:

注意:QString 是 Qt 的QString类型

我怎么称呼这个: