问题标签 [constructor-chaining]

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 回答
162 浏览

c++ - int 浮动的问题

这是我的问题。我有一个构造函数,它使颜色从 0 到 1 的 4 个浮点数。我想添加与 0 到 255 int 的兼容性,所以我有另一个这样的构造函数:

但是,这不起作用。rgba 浮点组件变成奇怪的数字。这有什么问题?

谢谢

0 投票
3 回答
439 浏览

c# - 带有中间变量的构造函数链接

我遇到了以下情况,其中包含重载的构造函数,我正在努力寻找一个好的解决方案。我看不到如何使用带有构造函数链接的中间赋值。

以下内容无效,但显示了我想要做的事情

我知道用有效代码编写上述内容的唯一方法是

这不仅是丑陋的代码,而且还需要两次数据库调用(除非编译器足够聪明,我对此表示怀疑)。

有没有更好的方法来编写上述内容?

0 投票
2 回答
1622 浏览

c# - 构造函数链接与基本构造函数调用

说我有以下内容:

注意我在 Derived 的两个重载中都需要形式参数 n ,因此我必须重复该N = n;行。

现在我知道这可以封装到一个单独的方法中,但是您仍然需要来自两个重载的相同的两个方法调用。那么,是否有一种更“优雅”的方式来做到这一点,也许是this与 结合使用base

这样我就可以有一个私有构造函数接受一个参数s,而其他两个重载可以调用那个......或者这可能与拥有一个单独的私有方法一样吗?

0 投票
4 回答
7317 浏览

c# - C# 构造函数链接 - 更改执行顺序

我想知道在 C# 中链接构造函数时如何更改执行顺序。我见过的唯一方法要求首先在当前构造函数之外调用链式构造函数。

具体来说,举个例子:

理想情况下,我想通过这样做来减少代码重复(注意,我承认在这个人为的示例中,并没有保存太多代码,但我正在使用可以带来更多好处的代码。为了清楚起见,我使用这个示例):

这在 VB .Net 中是可能的,但 C# 不允许我在另一个构造函数的中间调用构造函数 - 仅在开始时使用 Foo() : this() 语法。

所以我的问题是,链接构造函数时如何控制构造函数调用的顺序,而不是使用冒号语法,只能先调用另一个构造函数?

0 投票
2 回答
207 浏览

scjp - SCJP v6 (Sierra,Bates) 第 2 章,问题 12 构造函数调用的解释

我可以对此有一些反馈吗

鉴于“new House(“x”)”发送了一个字符串,我预计“House(String name)”构造函数会调用 Building 超类构造函数“Building(String name)”。在这种情况下,答案将是“bn xh hn x”。但是答案是“bh hn x”(是的,它确实与该输出一起运行)。

问题 1. 除了调用 "new Building("string_value")" 之外,House 还会调用 "Building(String name)" 构造函数吗?(即除了 House 构造函数中的附加代码?2.为什么调用无参数 Building 构造函数,而不是重载 Building (String name) 构造函数?我正在寻找的是可能有许多 Building 构造函数和可能需要从子类调用特定的超级构造函数。如何确保调用哪个构造函数(给定两个或多个选项)?

包含代码以方便参考。

答案是“bh hn x”

问候斯科特

0 投票
2 回答
7743 浏览

c# - 在 C# 4 中,如何在具有重载构造函数的父类的子类中拥有带有可选参数的构造函数?

我有一个父类,它有一个重载的构造函数,我有一个子类,它有一个带有可选参数的构造函数。有没有办法让子类的构造函数仍然暴露父类的重载,同时保留它自己的可选参数?

这是两个类及其所需构造函数的一些示例代码:

这是另一个子类构造函数的方法签名,我还想公开父构造函数的重载,但问题是如何做到这一点:

我认为,我已经找到了解决方案,但我不确定它是否尽可能干净。我已将其发布为答案,以防万一它是唯一的选择。

0 投票
4 回答
832 浏览

java - 在 Java 中链接构造函数而不从默认构造函数中抛出异常

我读过这个:我可以在构造函数中使用 throws 吗?- 这给了我正确的想法,并引导我得到一个答案,但不是很明确。我也阅读了其他几个,但找不到我的答案。回顾一下我从上下文中学到的东西,基本上,这不会编译......

...因为FileInputStream构造函数(从字符串构造函数调用)可能会抛出 FileNotFoundException。您仍然可以通过使其抛出相同的异常来创建构造函数,如下所示:

我的问题与默认构造函数(无参数)有关,该构造函数仅使用默认文件名字符串常量:

这会将构造函数链接为:

ExampleClass()--> ExampleClass(<String>)-->ExampleClass(<InputFileStream>)

在这种情况下,是否可以在默认构造函数中使用默认值(静态最终类成员)来实例化(进一步沿着链) FileInputStream,但不必使用throws FileNotFoundException代码(这需要有人使用类重新抛出或处理异常?

如果我可以执行以下操作,我将自己处理异常:

...但是,据我所知,这是不可能的,因为“构造函数调用必须是构造函数中的第一条语句”

在这一点上更习惯于.Net,如果我真的不想这样做,我从来没有被迫处理异常......:D

0 投票
5 回答
52960 浏览

c++ - C ++中的构造函数链接

我对构造函数链接的理解是,当一个类中有多个构造函数(重载构造函数)时,如果其中一个尝试调用另一个构造函数,则此过程称为 CONSTRUCTOR CHAINING ,C++ 不支持。最近我在看网上资料的时候偶然发现了这一段……它是这样的……

您可能会发现自己处于想要编写成员函数以将类重新初始化为默认值的情况。因为您可能已经有一个执行此操作的构造函数,所以您可能会尝试从您的成员函数中调用构造函数。如前所述,链接构造函数调用在 C++ 中是非法的。您可以从函数中的构造函数复制代码,这会起作用,但会导致重复代码。在这种情况下,最好的解决方案是将代码从构造函数移动到新函数,并让构造函数调用您的函数来完成初始化数据的工作。

调用构造函数的成员函数是否也属于构造函数链接?请在 C++ 中对这个主题有所了解。

0 投票
3 回答
180 浏览

java - 如何访问复杂的类链中的类字段

我的 A 类在其构造函数中创建了 B 类的实例。B 类的构造函数创建了其内部类 C 的实例。C 类在其构造函数中需要 A 类的字段,这就是问题所在。C 类仅达到 A 的字段的默认值。

在启动 B 和 C 之前,我在 A 的构造函数中初始化了 A 的字段的值。我检查了该字段是否具有我需要的值。尽管如此,C 的构造函数中该字段的值始终是默认值。我不知道如何处理这个问题。有什么帮助吗?

谢谢!

谢谢大家的回答!我觉得虽然有必要提供更多信息。

这是我的 A 类的一部分:有问题的变量是 startX 和 startY。我通过setter方法直接在构造函数中定义它们。B 类是 DrawView。C类是DrawThread。我不知道如何将参数传递给 DrawView 的构造函数,否则我会的。帮助?另一种选择是使用 /*display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

在 DrawView 或 DrawThread 中设置我的 startX 和 startY,但它就是不想工作。现在,这确实将我的问题更多地转移到了android上,对于如何在DrawThread的构造函数中获取屏幕大小的任何建议,我将不胜感激,这是所有这些的最终目标:)?

公共类 ColorAnimation 扩展 Activity {

B类的构造函数:

//

公共DrawView(上下文上下文,AttributeSet attrs){超级(上下文,attrs);

//C类DrawThread的一部分:

类 DrawView 扩展 SurfaceView 实现 SurfaceHolder.Callback {

0 投票
3 回答
1001 浏览

php - PHP > 如何将一个类分成多个类?

我有一个非常大的 PHP 类,称为“播放器”。

里面有很多函数(差不多2000行)。实际上,我以这种方式使用这些功能:

我认为将这个类分成多个类可能是个好主意,但我不知道如何。我怎么能创建类似的东西,例如:

如果我认为我必须在这个对象中创建一个对象,但如果我这样做了,我将无法访问主“$player”的对象数据(例如,在 Stuff Object 中,我无法访问 $播放器对象的级别变量。)