問題タブ [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#でデフォルトコンストラクタなしの型のインスタンスを作成する
例として次のクラスを取り上げます。
次に、リフレクションを使用してこのタイプのインスタンスを作成します。
通常、これは機能SomeType
しますが、パラメーターなしのコンストラクターが定義されていないため、を呼び出すと、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません。 」というメッセージとともにActivator.CreateInstance
タイプの例外がスローされます。このタイプのインスタンスを作成する別の方法はありますか?すべてのクラスにパラメーターなしのコンストラクターを追加するのはちょっと面倒です。MissingMethodException
c# - パラメータなしのGuidコンストラクタが空のGUIDを生成するのはなぜですか?
パラメータなしのGuidコンストラクターが、Guid.NewGuid()のようにデフォルトで生成されたGUIDではなく、空のGUIDを生成するのはなぜですか?
空のGUIDの特定の用途はありますか?
java - Java でのデフォルトのコンストラクターと継承
Java のデフォルト コンストラクタと継承について質問があります。
一般に、クラスを作成し、コンストラクターを含めない場合、Java は自動的にデフォルト コンストラクター (パラメーターのないコンストラクター) を提供します。このコンストラクターは、クラスのすべてのインスタンス変数 (存在する場合) をいくつかのデフォルト値 (0、null) で初期化します。 、または false)。ただし、いくつかのパラメーターを使用してコンストラクターを記述し、デフォルトのコンストラクターを記述しない場合、Java はデフォルトのコンストラクターを提供しません。私の質問は次のとおりです。他のクラスから継承するクラスの場合はどうなりますか?いくつかのパラメーターを含むコンストラクターを記述し、デフォルトのコンストラクターを含めない場合、それらはスーパークラスのデフォルトのコンストラクターを継承しますか?
c++ - C++ 標準リストとデフォルトで構築可能な型
の単一パラメーターコンストラクターがデフォルトで構築可能な型であるstd::list<T>
必要があるのはなぜですか? T
つまり、次のコードはコンパイルされません。
リストクラスの簿記が増えますが、 std::vector で既に行われているように、コンストラクトと破棄のイディオムを使用することは可能であるようです。
関連するメモとして、容量関数をリストに入れてみませんか? このような関数はメモリ割り当てコストを前払いし、後で異議を唱えるとオーバーヘッドを排除すると主張できpush_back
ます。少なくとも、2 つの STL シーケンス コンテナーのインターフェイスの一貫性が少し向上します。
c++ - ベクトル内の要素のデフォルトの構築
この質問への回答を読んでいるときに、ベクター内のオブジェクトのデフォルトの構築に関して疑問が生じました。それをテストするために、次のテストコードを書きました。
そして案の定、ベクター オブジェクトの作成中に Test structs のデフォルト コンストラクターが呼び出されます。しかし、私が理解できないのは、STLがオブジェクトを初期化する方法です。デフォルトのコンストラクターがあるため、intのベクトルなどの基本的なデータ型のベクトルを作成しますか? つまり、ベクトル内のすべての int の値が 0 になるのはなぜでしょうか? ゴミにならないの?
c# - 構造体をクラスに盲目的に変換して、デフォルトのコンストラクターを非表示にしますか?
このトピックに関連するすべての質問を読みました。それらはすべて、C#でデフォルトのコンストラクターが使用できない理由を示していますstruct
が、この状況に直面したときに一般的なアクションを提案する人はまだ見つかりません。
struct
明らかな解決策は、単にをaに変換class
し、その結果に対処することです。
それをとして維持する他のオプションはありますstruct
か?
内部コマースAPIオブジェクトの1つでこの状況に遭遇しました。設計者はそれをaclass
からに変換しましstruct
た。デフォルトのコンストラクター(以前はプライベートでした)は、オブジェクトを無効な状態のままにします。
オブジェクトをとして保持する場合struct
は、状態の妥当性をチェックするメカニズム(IsValid
プロパティのようなもの)を導入する必要があると思いました。私は多くの抵抗に直面し、「APIを使用する人は誰でもデフォルトのコンストラクターを使用すべきではない」という説明に、確かに眉をひそめました。(注:問題のオブジェクトは静的ファクトリメソッドを介して「適切に」構築され、他のすべてのコンストラクターはinternal
です。)
struct
この状況では、誰もが考え直すことなく、単に自分のsをclass
esに変換しているのでしょうか。
編集:このタイプのオブジェクトを-として保持する方法についてのいくつかの提案を見たいと思います-上記の問題のオブジェクトは、としてよりもとしてstruct
はるかに適しています。struct
class
c++ - operator>> を使用して値を読み取る方法はありますが、値へのデフォルトのコンストラクターはありませんか?
この汎用コードは、追加のエラー処理を使用して T 型の値を読み取ります。T を解析できる operator>> を持つことに依存しており、このようにして新しい型に拡張できます。
私が気付いていなかったのは、デフォルトのコンストラクターを持つ T に依存していることです。今、私はこの問題にぶつかりました。
私のオプションは何ですか?
それを行う正しい方法は何ですか?
c++ - 引数としてカスタム クラスを持つコンストラクターは、「呼び出しに一致する関数がありません...」をスローします。
カスタムタイプのコンストラクターを作成しようとしていますが、何らかの理由で呼び出そうとしています。別のクラスのコンストラクター定義のコンストラクターであると推測しています.同じ症状に合うものは見つかりませんでした私が探しているものがわからないかもしれないので、他にも質問があります。
私が電話するとき:
main.cpp では、LatLngBounds.cpp で、次の行で「'LatLng:LatLng() の呼び出しに一致する機能がありません」が 2 回スローされます。
誰でもアイデアはありますか?
ドリュー・J・ソンネ。
IDE: Xcode 3.2 (デバッグ 10.5 をターゲット)
OS: OSX 10.6
コンパイラ: GCC 4.2
アーキテクチャ: x86_64
main.cpp:
LatLngBounds.h
LatLngBounds.cpp
LatLng.h
LatLng.cpp