問題タブ [default-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.
c++ - C ++:デフォルトのコピーコンストラクタは他のコンストラクタとデストラクタの存在によって影響を受けますか?
ご存知のように、コンストラクターが宣言されている場合(コピーコンストラクターを含む)、デフォルトのコンストラクター(引数をとらないコンストラクター)は暗黙的に作成されません。デフォルトのコピーコンストラクター(オブジェクトの浅いコピーを実行するコンストラクター)でも同じことが起こりますか?また、デストラクタの存在はこれに影響しますか?
c++ - C++ 非静的メンバー配列の初期化
次のように定義されたグローバル配列を使用する古い C++ コードの編集に取り組んでいます。
これらすべての配列を、以下で定義する Robot クラスのプライベート メンバーにしたいと考えています。ただし、C++ コンパイラでは、宣言時にデータ メンバーを初期化できません。
これら 6 つの配列の要素を Robot() コンストラクターで初期化したいと考えています。各要素を1つずつ割り当てる以外にこれを行う方法はありますか?
scjp - SCJP Sierra Bates Chapter 2 質問 2 デフォルトのコンストラクター呼び出し
背景情報 Sierra & Bates, SCJP v6 book からの質問について質問があります。つまり、第 2 章の質問 2 です。与えられた答えは、「コンパイルが失敗する」ということです。しかし、これを neBeans で試したところ、コードはコンパイルされ、エラーなしで実行されました。また、選択肢の 1 つではない "D" の出力も返しました。super() などを挿入する必要性に関して、さまざまなフォーラムでこの同じ質問についていくつかの議論があります。ただし、コンパイルできることを誰も認識していないようです。
私は SCJP の勉強をしていて、すべての問題を netBeans で再現できるわけではないので、これは非常に重要です。その場合、(試験目的で)一部のコードが機能しない場合でも機能すると信じるようになるかもしれません。
参照しやすいようにコードが含まれています。
java - 「デフォルト」の HashMap を使用して別のコンストラクターを呼び出す
デフォルトのコンストラクタである MyClass() を使用して、クラス MyClass で多くのテストケースを実行しました。
MyClass の要件が変更され、ユーザーは HashMap を提供していくつかのペアを示すことができるようになりました。MyClass は少なくとも 1 つのペアを持つ必要があり、そのうちの 1 つが null の場合は例外をスローします。
すべてのテスト メソッドを次のように書き直す必要がないように、別のデフォルト コンストラクタを作成したいと考えていました。
最初に他のコンストラクターを呼び出す必要があるため、これは機能しません。そのため、いくつかのメソッドを作成することを考えました
それを使用して、次のように他のコンストラクターを呼び出します。
しかし、これはあまり良いスタイルではないように思えたので、このようなことを行う正しい方法を教えていただければ幸いです。
c++ - C++ で既定のコンストラクター用に作成されたアセンブリ コードはありますか
C++ のクラスで既定のコンストラクターまたはその他のコンストラクターを定義しない場合、コンパイラーが既定のコンストラクターを作成することを読みました。しかし、テスト クラスを作成し、それをアセンブリ コードにコンパイルして、何も作成されていないことを確認しました。
デフォルトのコンストラクターのコードがどのように作成されるか、または最初に作成されるかどうかを誰かが明確にすることはできますか?
c# - カスタム コントロール コンストラクター
この長い話で申し訳ありませんが、質問はそれに値すると思います。
私が作成したカスタム コントロールがあります。OnPaintBackground
これには、メンバーBrush
とPen
. 私は次のように作成していました:
コンストラクターは、ブラシとペンと背景用のものを作成するためのものが追加されたデフォルトのものでした。
ただし、親パネルを使用するコンストラクターを使用する方がよいと考えたので (親がないとコントロールを使用できないため)、コンストラクターにパラメーターを 1 つ追加しました。
次に、プログラムを実行すると、最初のコントロールが作成され、正常に描画されました。次に、最初のコントロールの後のすべてのコントロールで、最初のチャンスの例外が発生し、コントロール内System.Drawing.dll
のすべてのパネルの背景が、画像などが見つからないときに Winforms が表示する赤でした。ただし、作成するコントロールの最初のインスタンスは完全に機能していたことを思い出してください。X
そのため、ログに記録するだけでなく、例外がスローされたときに Visual Studio が中断するように設定し、オーバーライド内の次のOnPaintBackground
ような行で中断しました。
情報とともにArgument cannot be null
。そこで、デバッガー ウィンドウを調べたところ、bPen
null であるだけでなく、コンストラクターが呼び出されていても、すべてのブラシとペン、およびすべてが null であることがわかりました (MessageBox で確認)。
最終的に、デフォルトのコンストラクターからパラメーターを削除し、引数を取る別の別のコンストラクターを追加し、そのコンストラクターからデフォルトの ctor を呼び出すことで問題を解決しました。しかし、私は知りたいのですが、コントロールが s のようなものを作成できないようにするデフォルトのコンストラクターを持たないことに対して、C# は何を持っているPen
のでしょうか?
c++ - コンパイラによって生成された C++ の既定のコンストラクタが「悪い」のはなぜですか?
誰かが次の意味を説明してもらえますか?
クラスがメンバー変数を定義し、他のコンストラクターがない場合は、既定のコンストラクターを定義する必要があります。そうしないと、コンパイラがあなたに代わってそれを行います。
彼らは何を「悪い」と呼んでいますか?
wpf - XAMLでデフォルトのコンストラクターを使用せずにユーザーコントロールに名前を付ける
パラメータなしのコンストラクタなしでユーザーコントロールがあります。それを呼びましょうWithoutDefaultConstructor
。別のコントロール(と呼ばれる)のXAMLコードにWithoutDefaultConstructor
呼び出されたものを挿入したいと思います。ただし、次のコンパイラエラーが発生します。myControl
MainWindow
タイプ'WithoutDefaultConstructor'はName属性を持つことができません。値の型とデフォルトのコンストラクターのない型は、ResourceDictionary内の項目として使用できます。
パラメータなしのコンストラクタをに追加せずにこれを修正するにはどうすればよいWithoutDefaultConstructor
ですか?
内容は次のMainWindow.xaml
とおり です。
内容は次のWithoutDefaultConstructor.xaml.cs
とおりです。
java - 私が得ることができないかなり単純なコンストラクターの質問。ジャワ
- メッセージを出力するデフォルトのコンストラクター (引数を取らないコンストラクター) を持つクラスを作成します。main() メソッドで、このクラスのオブジェクトを作成します。
- オーバーロードされたコンストラクターを手順 1 のコードに追加します。新しいコンストラクターは String 引数を受け取り、それをメッセージと共に出力する必要があります。new コンストラクターを使用して、このクラスの 2 番目のオブジェクトを作成するように main() を変更します。
したがって、2 番目の部分は文字通り別の言語で書かれたようなものです。どうすればよいかまったくわかりません。最初の部分は、これまでに得たものです。
そのメッセージを印刷しようとすると、エラーが発生します。私はとても混乱しています。私はあなたに私のラボを依頼しているわけでは決してありません。
c++ - 整数配列をデフォルトで構築するとゼロ初期化されますか?
配列メンバーを持つ構造体があり、構造体のコンストラクターで配列の既定のコンストラクターを明示的に呼び出した場合、要素は既定で構築されますか? (整数配列の場合、これはゼロで初期化されることを意味します)。
gcc を使用した簡単なテストでは、これが事実であることが示唆されていますが、この動作に依存できることを確認したかったのです。
(構造コンストラクターで配列を明示的にデフォルト構築しない場合、配列要素はランダムな値を持つことに気付きました。)