問題タブ [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.

0 投票する
9 に答える
35070 参照

c++ - 空の括弧付きのデフォルト コンストラクター

丸括弧 (括弧) の空のセットが C++ で既定のコンストラクターを呼び出すのに有効でないという正当な理由はありますか?

毎回「()」を自動的に入力するようです。これが許可されない正当な理由はありますか?

0 投票する
4 に答える
92860 参照

c# - リフレクションを使用してC#でデフォルトコンストラクタなしの型のインスタンスを作成する

例として次のクラスを取り上げます。

次に、リフレクションを使用してこのタイプのインスタンスを作成します。

通常、これは機能SomeTypeしますが、パラメーターなしのコンストラクターが定義されていないため、を呼び出すと、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません。 」というメッセージとともにActivator.CreateInstanceタイプの例外がスローされます。このタイプのインスタンスを作成する別の方法はありますか?すべてのクラスにパラメーターなしのコンストラクターを追加するのはちょっと面倒です。MissingMethodException

0 投票する
4 に答える
6352 参照

c# - パラメータなしのGuidコンストラクタが空のGUIDを生成するのはなぜですか?

パラメータなしのGuidコンストラクターが、Guid.NewGuid()のようにデフォルトで生成されたGUIDではなく、空のGUIDを生成するのはなぜですか?

空のGUIDの特定の用途はありますか?

0 投票する
11 に答える
94867 参照

java - Java でのデフォルトのコンストラクターと継承

Java のデフォルト コンストラクタと継承について質問があります。

一般に、クラスを作成し、コンストラクターを含めない場合、Java は自動的にデフォルト コンストラクター (パラメーターのないコンストラクター) を提供します。このコンストラクターは、クラスのすべてのインスタンス変数 (存在する場合) をいくつかのデフォルト値 (0、null) で初期化します。 、または false)。ただし、いくつかのパラメーターを使用してコンストラクターを記述し、デフォルトのコンストラクターを記述しない場合、Java はデフォルトのコンストラクターを提供しません。私の質問は次のとおりです。他のクラスから継承するクラスの場合はどうなりますか?いくつかのパラメーターを含むコンストラクターを記述し、デフォルトのコンストラクターを含めない場合、それらはスーパークラスのデフォルトのコンストラクターを継承しますか?

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

c++ - C++ 標準リストとデフォルトで構築可能な型

の単一パラメーターコンストラクターがデフォルトで構築可能な型であるstd::list<T>必要があるのはなぜですか? Tつまり、次のコードはコンパイルされません。

リストクラスの簿記が増えますが、 std::vector で既に行われているように、コンストラクトと破棄のイディオムを使用することは可能であるようです。

関連するメモとして、容量関数をリストに入れてみませんか? このような関数はメモリ割り当てコストを前払いし、後で異議​​を唱えるとオーバーヘッドを排除すると主張できpush_backます。少なくとも、2 つの STL シーケンス コンテナーのインターフェイスの一貫性が少し向上します。

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

c++ - ベクトル内の要素のデフォルトの構築

この質問への回答を読んでいるときに、ベクター内のオブジェクトのデフォルトの構築に関して疑問が生じました。それをテストするために、次のテストコードを書きました。

そして案の定、ベクター オブジェクトの作成中に Test structs のデフォルト コンストラクターが呼び出されます。しかし、私が理解できないのは、STLがオブジェクトを初期化する方法です。デフォルトのコンストラクターがあるため、intのベクトルなどの基本的なデータ型のベクトルを作成しますか? つまり、ベクトル内のすべての int の値が 0 になるのはなぜでしょうか? ゴミにならないの?

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

c# - 構造体をクラスに盲目的に変換して、デフォルトのコンストラクターを非表示にしますか?

このトピックに関連するすべての質問を読みました。それらはすべて、C#でデフォルトのコンストラクターが使用できない理由を示していますstructが、この状況に直面したときに一般的なアクションを提案する人はまだ見つかりません。

struct明らかな解決策は、単にをaに変換classし、その結果に対処することです。

それをとして維持する他のオプションはありますstructか?

内部コマースAPIオブジェクトの1つでこの状況に遭遇しました。設計者はそれをaclassからに変換しましstructた。デフォルトのコンストラクター(以前はプライベートでした)は、オブジェクトを無効な状態のままにします。

オブジェクトをとして保持する場合structは、状態の妥当性をチェックするメカニズム(IsValidプロパティのようなもの)を導入する必要があると思いました。私は多くの抵抗に直面し、「APIを使用する人は誰でもデフォルトのコンストラクターを使用すべきではない」という説明に、確かに眉をひそめました。(注:問題のオブジェクトは静的ファクトリメソッドを介して「適切に」構築され、他のすべてのコンストラクターはinternalです。)

structこの状況では、誰もが考え直すことなく、単に自分のsをclassesに変換しているのでしょうか。

編集:このタイプのオブジェクトを-として保持する方法についてのいくつかの提案を見たいと思います-上記の問題のオブジェクトは、としてよりもとしてstructはるかに適しています。structclass

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

c++ - operator>> を使用して値を読み取る方法はありますが、値へのデフォルトのコンストラクターはありませんか?

この汎用コードは、追加のエラー処理を使用して T 型の値を読み取ります。T を解析できる operator>> を持つことに依存しており、このようにして新しい型に拡張できます。

私が気付いていなかったのは、デフォルトのコンストラクターを持つ T に依存していることです。今、私はこの問題にぶつかりました。

私のオプションは何ですか?

それを行う正しい方法は何ですか?

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

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

0 投票する
8 に答える
1688 参照

c++ - C++ で空のプライベート コンストラクターに対してのみ宣言を使用するのは正しいですか?

たとえば、これは正しいです:

または、定義を提供する必要があります。

? 現在の回答をありがとう。この質問を拡張してみましょう - コンパイラは、この例の 1 つでより良いコードを生成しますか? ctor に本体を提供すると、コンパイラがコンパイル単位にいくつかの(空の)コードを強制的に含めると想像できますか?これは自動生成コードにも当てはまりますか?