問題タブ [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 投票する
10 に答える
18852 参照

java - 空のコンストラクターも使用するのはなぜですか?

私は最近 Java を読んでいて、何か (イディオム?) に新しいものに出くわしました: プログラムでは、複数のコンストラクターを持つクラスには、常に空のコンストラクターも含まれます。例えば:

最初のコンストラクターは「実際の」コンストラクターではないようです。どの場合でも、他のコンストラクターのいずれかが使用されるようです。では、なぜそのコンストラクターがまったく定義されているのでしょうか。

0 投票する
3 に答える
1863 参照

javascript - JavaScript におけるプロトタイプ継承の規約

次のようなコードがたくさんあります。

ただし、次の場合:

これは誤りです。s のコンストラクターは確かに Sub. これを行うのは従来の/より良いですか?

またはそれは本当に問題ではありませんか?

0 投票する
5 に答える
4455 参照

php - コンストラクタを使用する利点は?

PHP で OOP についてもっと学ぼうとする私の探求の中で。私はコンストラクター関数に何度か出くわしましたが、もう無視することはできません。私の理解では、オブジェクトを作成した瞬間にコンストラクターが呼び出されますが、これは正しいですか?

しかし、「通常の」関数またはメソッドを呼び出しとして使用できるのに、なぜこのコンストラクターを作成する必要があるのでしょうか?

乾杯、キース

0 投票する
6 に答える
1248 参照

c++ - C++コピーコンストラクタ

私は最近、

SomeClass :: getResult()は次のようになります。

ここで、最初のコードスニペットの例を使用して、コンパイルして実行すると、プログラムがABORTシグナルでクラッシュしました。次に、最初のスニペットを次のように変更しました。

うまくいきました。また、試してみるために、もう一度次のように変更しました。

これもうまくいきました。

さて、最初の例が失敗し、次の2つが成功した理由がわかりません。私が理解しているように、最初の例では、コピーコンストラクターを使用して結果を初期化します。しかし、これは2番目の例にも当てはまりませんか?では、なぜ2番目の例が成功したのでしょうか。3番目の例は、もう少し意味があります。copyconstは使用されていないため、構築後に割り当てるだけです。

要するに、次の違いは何ですか?

ムチョスありがとう!

0 投票する
3 に答える
654 参照

c++ - 例外クラスの作成にマクロの代わりにテンプレートを使用できますか?

新しい「例外」クラスを定義したいことがよくありますが、コンストラクターは継承されないため、適切なコンストラクターを定義する必要があります。

Typedef は単にエイリアスであり、新しいクラスではないため、これには機能しません。現在、この些細なボイラープレートの繰り返しを避けるために、私はドンキーワークを行う #define を使用しています。

しかし、これを達成するためのより良い方法があるかどうか疑問に思っています-おそらくテンプレート、またはいくつかの新しいC ++ 0x機能を使用して

0 投票する
5 に答える
6305 参照

java - スーパークラスのコンストラクターを使用する

Javaは多重継承を許可していません。つまり、クラスは2つのクラスから継承できません。これは、共通点がないため、同じ継承パス上にないことを意味します。ただし、これらのクラスがクラスの直接スーパークラスのスーパークラスである場合、クラスはより多くのクラスから継承できます。しかし、クラスはこれらのクラスから間接的に継承します。つまり、これらの上位のスーパークラスからは何も「認識」されません。コンストラクターを検討するときに混乱しました(コンストラクターでsuper()を使用)。たとえば、次のクラスがある場合:

クラスCのコンストラクターは、最初にsuper()を使用してクラスBのコンストラクターを呼び出します。これが発生すると、Bのコンストラクター自体が最初にAのコンストラクターを呼び出します(super()を使用)が、CのコンストラクターはAのコンストラクターについて何も知りませんよね?つまり、継承は直接のスーパークラス(継承階層の最初の(最も近い)クラス)からのみです。これが私の質問です。super()では、継承階層に他のクラスがいくつあっても、直接スーパークラスのコンストラクターのみを意味します。そして、これはコンストラクターだけでなく、すべてのメソッドとインスタンス変数に適用されます。

よろしく

0 投票する
3 に答える
4368 参照

javascript - プロトタイプオブジェクトまたはコンストラクターでメソッドを設定しますか?

コンストラクターとプロトタイプオブジェクトのメソッドの設定の違いを説明していただけますか?次のコードは、メソッドを設定するこれら2つの方法を示していますsay_hellosay_byeどちらも正常に機能します。

0 投票する
2 に答える
369 参照

c++ - テンプレート化されたコンストラクターを持つ非テンプレート化クラスからの継承 - あいまいさを解決する方法は?

クラス MyParent があるとします。

そして、このコンストラクターを使用する派生クラス:

あいまいさがあるため、コンパイルエラーが発生します。コンパイラは、intがコンストラクターではなく、クラスへのテンプレート引数であると見なします。

intをコンストラクターの引数にすることを指定するにはどうすればよいですか?

0 投票する
5 に答える
7951 参照

c# - C#でコンストラクターが継承されないのはなぜですか?

C# の継承について、私が理解できない非常に基本的なことがあると思います。誰かが私を啓発してくれませんか?