問題タブ [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.
c# - コンストラクターのオーバーロード時にコードを再利用しますか?
そのため、最初は次のコンストラクターがありました。
そして、オブジェクトによっては、さらに 3 つのパラメーターが必要になることに気付きました。そこで、さらに 3 つのパラメーターを使用してコンストラクターをオーバーロードし、コードをコピーして貼り付け、追加のパラメーターも割り当てました。
ご覧のとおり、2 つのコンストラクターは、3 つの余分なパラメーター (1 つのブール値、1 つのセマフォ、1 つのバッファー) を除いて、その実装はほとんど同じです。私が知りたいのは、オーバーロードされたコンストラクターにすべてのコードを記述する代わりに最初のコンストラクターを参照し、追加のパラメーターに対して追加のコードを記述するだけでよい方法はありますか?
継承されたクラスで「Super()」メソッドを使用するようなことについて話している(調べたところ、同じクラス内にあるため、ここでは実行できません)。
ありがとうございました。
c++ - (削除された)コピーコンストラクターが暗黙的な変換よりも好まれるのはなぜですか?
以下のコードを検討してください。
このクラスには、 を受け入れるBar
ユーザー定義の変換演算子 toがあります。ただし、 の最後の行では、 に変換されてから に渡されると予想していました。ただし、削除されたコンストラクターのみが考慮されます。このコンストラクターの方が適していることは理解していますが、オーバーロード セットに も含まれていないのはなぜですか? また、コンパイラーが暗黙的な変換を実行しないのはなぜですか?Foo
Bar&
main
Foo f1
Bar
Foo(const Bar&)
Foo(const Foo&) = delete;
Foo(const Bar&)
java - Java - オーバーロードされたコンストラクター呼び出しで HashMap を作成する
かなり簡単な質問がありましたが、これまでのところ何も見つかりませんでした。
2 つのクラス コンストラクターを作成しようとしています。
最初のコンストラクターは、2 つの String と 1 つの HashMap を取得し、クラス変数を初期化します。
2 番目のコンストラクターは、2 つの文字列のみを取得し、「デフォルト」の HashMap を作成する必要があります。
this()
通常、内部にデフォルト値を指定して呼び出すだけですが、 HashMap
.
Eclipse はエラーをマークします。
String
型の不一致: からに変換できませんHashMap<String,String>
そうでなければ、this()
-call を関数の最初のステートメントにすることはできません。
これを解決する方法はありますか?
最悪の場合、コードを複製する必要がありましたが、他に良い方法はないかと考えていました。
c# - オーバーロードされたコンストラクター c#
内部に 1 つの名前空間 (DXApplication5) と 2 つのクラスがあります。クラスでグリッドビューを更新しようとしています。以下のコードで何が間違っていますか? 事前にthx、
エラー: 'DXApplication5.grid_refresh.grid_refresh(DXApplication5.Form1)' に最適なオーバーロードされたメソッドに無効な引数が含まれています
引数 1: 'DevExpress.XtraEditors.XtraForm' から 'DXApplication5.Form1' に変換できません
// 別のクラスから呼び出す
c++ - コンパイラがオーバーロードされたコンストラクタ C++ を認識しない
基本的なコンパイラのシンボル テーブルを作成しようとしています。Symbol クラスには 2 つのコンストラクターがあります。1 つは 4 つのパラメーターを受け取り、もう 1 つは 5 を受け取ります。コンパイラは、5 つのパラメーターを持つシンボル b について不平を言います。
そこにあるので、呼び出す一致する関数がないと言っている理由がわかりません。「const Symbol::string&」が「std::string&」と異なることが問題を引き起こしているかどうか、またはそうである場合の修正方法はわかりませんが。
主なものは次のとおりです。
シンボル.h:
シンボル.cpp
c# - C# メソッドのオーバーロード - 派生型によるパラメーター型のオーバーロード
次の状況で、C# がコンストラクタ (またはメソッド) のどのオーバーロードを使用するかを決定する規則は何ですか?
- オーバーロードは、パラメーターの型のみが異なります
- オーバーロードはすべて同じ型階層の一部です
次の点を考慮してください。
List から派生したカスタム型 (ここでは部分的な表現にすぎません。演習のために、クラスがメタデータの概念を List に追加するとします):
/li>クラス階層のさまざまなレベルを取るさまざまなコンストラクターを持つクラス:
/li>
次のコードで呼び出されるコンストラクターはどれですか?また、オーバーロードはどのように解決されますか?:
二次的な質問として、コンストラクターのオーバーロード規則は他のインスタンス メソッドと同じですか? このクラスがある場合:
そして私は電話する
動作はコンストラクターと同じですか、それとも異なりますか? さらに、DoSomethingClass が代わりにインスタンス型である場合、
違いますか?
これまでの私の観察では、コンストラクター/メソッドに渡される参照の型によって、選択されるコンストラクターが完全に決定されます。つまり、IEnumerable コンストラクターへの IEnumerable オーバーロードにラップされた CustomList です。それが常に当てはまると仮定するのは正しいでしょうか、それとも例外ですか?
c++ - 新しいオーバーロードからのコンストラクターの呼び出しと直接の違いは何ですか?
以下のコードを考慮すると、呼び出すnew(name, 10) Foo()
と、次のことがこの順序で起こると予想されます。
void* operator new(std::size_t size, QString name, int id)
呼び出されるオーバーロードFoo(QString name, int id)
この時点でオーバーロードの上からコンストラクターが呼び出されると、クラスに十分なメモリが割り当てられるため、安全に実行および設定できます。名前(名前)、id(id)
Foo()
空のコンストラクターを呼び出して何もしません。ここでのみ実装する必要があります。
しかし、私は何かが欠けています。メンバー名の値が空です。誰かが何をどのように修正するかを説明してくれますか?
コード:
注: QString は Qt のQString
型です
これをどのように呼ぶか: