問題タブ [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# - コンストラクターのオーバーロード時にコードを再利用しますか?

そのため、最初は次のコンストラクターがありました。

そして、オブジェクトによっては、さらに 3 つのパラメーターが必要になることに気付きました。そこで、さらに 3 つのパラメーターを使用してコンストラクターをオーバーロードし、コードをコピーして貼り付け、追加のパラメーターも割り当てました。

ご覧のとおり、2 つのコンストラクターは、3 つの余分なパラメーター (1 つのブール値、1 つのセマフォ、1 つのバッファー) を除いて、その実装はほとんど同じです。私が知りたいのは、オーバーロードされたコンストラクターにすべてのコードを記述する代わりに最初のコンストラクターを参照し、追加のパラメーターに対して追加のコードを記述するだけでよい方法はありますか?

継承されたクラスで「Super()」メソッドを使用するようなことについて話している(調べたところ、同じクラス内にあるため、ここでは実行できません)。

ありがとうございました。

0 投票する
1 に答える
225 参照

c++ - (削除された)コピーコンストラクターが暗黙的な変換よりも好まれるのはなぜですか?

以下のコードを検討してください。

このクラスには、 を受け入れるBarユーザー定義の変換演算子 toがあります。ただし、 の最後の行では、 に変換されてから に渡されると予想していました。ただし、削除されたコンストラクターのみが考慮されます。このコンストラクターの方が適していることは理解していますが、オーバーロード セットに も含まれていないのはなぜですか? また、コンパイラーが暗黙的な変換を実行しないのはなぜですか?FooBar&mainFoo f1BarFoo(const Bar&)Foo(const Foo&) = delete;Foo(const Bar&)

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

java - Java - オーバーロードされたコンストラクター呼び出しで HashMap を作成する

かなり簡単な質問がありましたが、これまでのところ何も見つかりませんでした。

2 つのクラス コンストラクターを作成しようとしています。
最初のコンストラクターは、2 つの String と 1 つの HashMap を取得し、クラス変数を初期化します。

2 番目のコンストラクターは、2 つの文字列のみを取得し、「デフォルト」の HashMap を作成する必要があります。

this()通常、内部にデフォルト値を指定して呼び出すだけですが、 HashMap.

Eclipse はエラーをマークします。

String型の不一致: からに変換できませんHashMap<String,String>

そうでなければ、this()-call を関数の最初のステートメントにすることはできません。

これを解決する方法はありますか?

最悪の場合、コードを複製する必要がありましたが、他に良い方法はないかと考えていました。

0 投票する
1 に答える
51 参照

c# - オーバーロードされたコンストラクター c#

内部に 1 つの名前空間 (DXApplication5) と 2 つのクラスがあります。クラスでグリッドビューを更新しようとしています。以下のコードで何が間違っていますか? 事前にt​​hx、

エラー: 'DXApplication5.grid_refresh.grid_refresh(DXApplication5.Form1)' に最適なオーバーロードされたメソッドに無効な引数が含まれています

引数 1: 'DevExpress.XtraEditors.XtraForm' から 'DXApplication5.Form1' に変換できません

// 別のクラスから呼び出す

0 投票する
1 に答える
578 参照

c++ - コンパイラがオーバーロードされたコンストラクタ C++ を認識しない

基本的なコンパイラのシンボル テーブルを作成しようとしています。Symbol クラスには 2 つのコンストラクターがあります。1 つは 4 つのパラメーターを受け取り、もう 1 つは 5 を受け取ります。コンパイラは、5 つのパラメーターを持つシンボル b について不平を言います。

そこにあるので、呼び出す一致する関数がないと言っている理由がわかりません。「const Symbol::string&」が「std::string&」と異なることが問題を引き起こしているかどうか、またはそうである場合の修正方法はわかりませんが。

主なものは次のとおりです。

シンボル.h:

シンボル.cpp

0 投票する
0 に答える
670 参照

c# - C# メソッドのオーバーロード - 派生型によるパラメーター型のオーバーロード

次の状況で、C# がコンストラクタ (またはメソッド) のどのオーバーロードを使用するかを決定する規則は何ですか?

  • オーバーロードは、パラメーターの型のみが異なります
  • オーバーロードはすべて同じ型階層の一部です

次の点を考慮してください。

  • List から派生したカスタム型 (ここでは部分的な表現にすぎません。演習のために、クラスがメタデータの概念を List に追加するとします):

    /li>
  • クラス階層のさまざまなレベルを取るさまざまなコンストラクターを持つクラス:

    /li>

次のコードで呼び出されるコンストラクターはどれですか?また、オーバーロードはどのように解決されますか?:

二次的な質問として、コンストラクターのオーバーロード規則は他のインスタンス メソッドと同じですか? このクラスがある場合:

そして私は電話する

動作はコンストラクターと同じですか、それとも異なりますか? さらに、DoSomethingClass が代わりにインスタンス型である場合、

違いますか?

これまでの私の観察では、コンストラクター/メソッドに渡される参照の型によって、選択されるコンストラクターが完全に決定されます。つまり、IEnumerable コンストラクターへの IEnumerable オーバーロードにラップされた CustomList です。それが常に当てはまると仮定するのは正しいでしょうか、それとも例外ですか?

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)この時点でオーバーロードの上からコンストラクターが呼び出されると、クラスに十分なメモリが割り当てられるため、安全に実行および設定できます。

    名前(名前)、id(id)

  3. Foo()空のコンストラクターを呼び出して何もしません。ここでのみ実装する必要があります。

しかし、私は何かが欠けています。メンバー名の値が空です。誰かが何をどのように修正するかを説明してくれますか?

コード:

注: QString は Qt のQString型です

これをどのように呼ぶか: