問題タブ [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#-3.0 - C#3.0で、指定されたクラスのコンストラクターをオーバーロードするときに、クラス本体にデフォルトのコンストラクターを記述する必要があるのはなぜですか?
C#3.0で、指定されたクラスのコンストラクターをオーバーロードするときに、クラス本体にデフォルトのコンストラクターを記述する必要があるのはなぜですか?私の知る限り、そうする必要はありませんでした。
ありがとうございました
c++ - 基本クラス コンストラクターの呼び出し
以下のプログラムでは、行は
正しい/許可されていますか?つまり、ANSI 規則に従っていますか?
c++ - コンパイラに C++ でデフォルトのコンストラクタを作成させるにはどうすればよいですか?
独自の明示的なコンストラクターを提供しても、コンパイラーにデフォルトのコンストラクターを作成させる方法はありますか?
時々私はそれらが非常に便利だと思うことがあり、特に大きなクラスの場合、コピー コンストラクターなどを書くのは時間の無駄だと思います。
c++ - 明示的なデフォルトコンストラクタの目的
最近、明示的なデフォルトコンストラクターを必要とするC++0xのクラスに気づきました。ただし、デフォルトのコンストラクターを暗黙的に呼び出すことができるシナリオを思い付くことができません。それはかなり無意味な指定子のようです。Class c;
多分それは賛成することを許さないだろうと思っClass c = Class();
たが、そうではないようだ。
C ++ 0x FCDからのいくつかの関連する引用は、ナビゲートしやすいためです[同じ場所にない場合でも、同様のテキストがC++03に存在します]
12.3.1.3 [class.conv.ctor]
デフォルトのコンストラクターは、明示的なコンストラクターの場合があります。このようなコンストラクターは、デフォルトの初期化または値の初期化(8.5)を実行するために使用されます。
明示的なデフォルトコンストラクターの例を引き続き提供しますが、上記で提供した例を模倣しているだけです。
8.5.6 [decl.init]
デフォルトで-タイプTのオブジェクトを初期化するということは、次のことを意味します。
— Tが(おそらくcv修飾された)クラスタイプの場合(第9節)、Tのデフォルトコンストラクターが呼び出されます(Tにアクセス可能なデフォルトコンストラクターがない場合、初期化は不正な形式になります)。
8.5.7 [decl.init]
タイプTのオブジェクトを値初期化するということは、次のことを意味します。
— Tがユーザー提供のコンストラクター(12.1)を持つ(おそらくcv修飾された)クラスタイプ(条項9)の場合、Tのデフォルトコンストラクターが呼び出されます(Tにアクセス可能なデフォルトコンストラクターがない場合、初期化は不正な形式になります) );
どちらの場合も、標準ではデフォルトのコンストラクターが呼び出される必要があります。しかし、それは、デフォルトのコンストラクターが非明示的である場合に起こることです。完全を期すために:
8.5.11 [decl.init]
オブジェクトに初期化子が指定されていない場合、オブジェクトはデフォルトで初期化されます。
私の知る限り、これはデータなしからの変換を残すだけです。これは意味がありません。私が思いつくことができる最高のものは次のとおりです。
しかし、明らかにそれはC++がデフォルトの引数を処理する方法ではありません。他に何がexplicit Class();
違う振る舞いをするのでしょうClass();
か?
この質問を生成した特定の例は、std::function
[20.8.14.2func.wrap.func]でした。いくつかの変換コンストラクターが必要であり、いずれも明示的にマークされていませんが、デフォルトのコンストラクターはです。
c# - System.Drawing.Graphics の既定のコンストラクターはどのように削除されますか?
Graphics のオブジェクトを作成しようとすると、次のように動作しないのはなぜですか?
(私はそれを機能させたい場合は作成してprivate System.Windows.Forms.Panel Obj;
から実行できることを認識しています)CreateGraphics()
Graphics のカスタム コンストラクターを見つけようとしましたが、見つかりませんでした。Microsoft はどこでそれを定義したのですか、またはどのようにブロックしたのですか?
java - Javaでデフォルトの引数なしコンストラクタが必要なのはなぜですか?
多くの Java 関連 API でデフォルトの引数なしコンストラクターが必要なのはなぜですか? 原則として、すべての Java Bean クラスまたはエンティティ クラス (JPA など)、または JAX-WS 実装クラスには、明示的な引数なしのコンストラクターが必要です。
Java がデフォルトで引数なしのコンストラクターを提供している場合、これらの標準のほとんどが明示的なコンストラクターを必要とするのはなぜですか?
c++ - C++では常に基本クラスのコンストラクターを呼び出す必要がありますか?
いくつかのクラスC
があり、それを継承してこのクラスに名前を付けたとしD
ます。C
次の例のように、常に のデフォルト コンストラクターを呼び出す必要がありますか。
C
デフォルトのコンストラクターしかないことに注意してください。Dから呼び出す必要がありますか?これを見つける方法がわかりませんでした。
ありがとう、ボダ・シド。
c# - C#のリフレクションを使用してコンパイラーが生成したデフォルトコンストラクターを検出します
.NET 3.5 SP1をターゲットにしており、CommentCheckerを使用してXMLドキュメントを検証しています。次のようなクラスに到達するまで、すべてが正常に機能します。
上記の例では、私が理解しているように、コンパイラーは私のクラスのデフォルトコンストラクターを生成します。これに伴う問題は、CommentCheckerが、コンストラクターにコメントがないことを通知する警告を生成することです。
この特殊なケースを検出して無視するようにプログラムを変更しようとしましたが、行き詰まりました。すでに試しましIsDefined(typeof(CompilerGeneratedAttribute), true)
たが、うまくいきませんでした。
つまり、リフレクションを使用してデフォルトのコンストラクターを検出するにはどうすればよいですか?