問題タブ [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++ - (単純なコンストラクターの概念)なぜFoo();をしないのですか?何でもする?
これは、私が問題を抱えている単純なC++コンストラクターの概念です。
このコードスニペットを考えると:
出力は次のとおりです。
Foo f2();
何もしていないようです。何です Foo f2();
かそしてなぜそれは何もしないのですか?
c++ - コピー コンストラクターからの 2 種類のコンストラクター呼び出し
以下のサンプル コードを検討してください。
Type1: クラス sample に対して明示的に宣言されていないコピー コンストラクター
(上記のコードでは Type1 が示されています。次に、クラス sample のコピー コンストラクターがコンパイラによって暗黙的に生成されます)。ステートメントLine1
が実行されると、最初に のコピー コンストラクターclass core
が呼び出され、次に のコピー コンストラクターclass sample
が呼び出されます。
Type2: クラス sample に対して明示的に定義されたコピー コンストラクター
ステートメントLine1
が実行されると、最初に のデフォルト コンストラクターclass core
が呼び出され、次に のコピー コンストラクターclass sample
が呼び出されます。
質問:
Type1 と Type2 で述べたように、コピー コンストラクターの動作にこの違いがあるのはなぜですか?
java - Javaコンストラクタ/メソッドをクライアントで使用しないようにマークする好ましい方法は?
一部のデフォルトのコンストラクターとセッターを使用できない/推奨されていないものとしてマークしたいと思います。注釈 に多少似ている@Deprecated
必要がありますが、同じ意味を持つべきではありません。一部のフレームワーク (Hibernate、Spring、Jackson) がそうさせているため、コンストラクターとセッターのみを追加しています。そのような構造が存在するかどうか知っていますか?
c++ - constオブジェクトが初期化されていないことに対するコンパイラの苦情
重複の可能性:
初期化されていないconst
constオブジェクトを初期化する必要があることを理解しています。
したがって、次のコードの場合、
constオブジェクトが初期化されていないため、コンパイラは文句を言いobj
ます。
しかし、デフォルトのコンストラクターを使用してコード(以下に表示)を変更すると、コンパイラーはエラーをスローしません。
新しく追加されたデフォルトのコンストラクターがコンパイラーを満足させることは何ですか?
python - Pythonでの複数の継承の動作
クラスのデフォルト__init__
メソッドは作成時にc
呼び出されobj
、内部的には__init__
クラスのみを呼び出しますb
。
私の理解によると、2つのクラスから継承する場合、派生クラスオブジェクトには両方のクラスの変数が含まれている必要があります(これらのクラスにプライベートでない場合)。
私の質問:派生オブジェクトに両方のクラスの変数が含まれていると期待するのは間違っていますか?もしそうなら、なぜですか?__init__
クラスのa
も呼ばれるべきではありませんか?C ++のような言語では何が起こっただろうか?
java - Javaでのコンストラクタ関連のエラー
私はJavaを初めて使用し、このコードを作成しました。単純なクラスBoxと、幅と長さの2つの属性、およびいくつかの関数があります。
このエラーが発生します。どうすれば修正できますか?誰かがこれを説明できますか?
c++ - C++ のテンプレート バージョンでデフォルトのコピー コンストラクターと代入演算子をオーバーライドできないのはなぜですか
コピーコンストラクターと代入演算子をテンプレートバージョンでオーバーロードすることについてこの質問をし、質問に関連する混乱を考慮して(コンパイラのバグのように見えるため)、テンプレートコピーコンストラクターとテンプレート代入演算子のみを使用して試してみようと思いました何が起こるか見てください。しかし、それらはコンパイラによって完全に無視されます。
テンプレート バージョンでデフォルトをオーバーライドできないのはなぜですか (答えは、デフォルトの方が適切であると思われますが、テンプレート バージョンもデフォルトとして機能するようにしたいと考えています)。そして、デフォルトの代わりにテンプレートのバージョンが呼び出されるようにするためにできることはありますか?
c++ - 角かっこが含まれている場合、デフォルトのコンストラクターはテンプレートクラス内でコンパイルされません(g ++ 4.6.1)
これに関するGoogleの情報は見つかりませんでした。次の例では、次のようになります。
コードは次のエラーでコンパイルに失敗します:
静的メンバー関数'staticvoid Template :: Test()':19:22:エラー:デフォルトのテンプレート引数は、-std = c++0xまたは-std=gnu++0xがないと関数テンプレートで使用できません。
問題は、その行に角かっこが表示されるのが気に入らないことです。その理由がわかりません。角かっこを削除すると、コードは正常にコンパイルされます。また、テンプレート宣言(13行目)を削除すると、正常にコンパイルされます。これはバグですか、それともまさにこの状況についてどこかにルールがありますか?
私はg++4.6.1(gccバージョン4.6.1(Ubuntu / Linaro 4.6.1-9ubuntu3))を使用しています
c++ - C ++:継承のための必須のデフォルトのスーパークラスコンストラクター?
スーパークラスから継承できるようにするには、スーパークラスにデフォルトのコンストラクターを含める必要がありますか?すべての派生クラスコンストラクターがスーパークラスコンストラクターの1つを明示的に呼び出して、適切なパラメーターを提供していると仮定します-そのようなコードは機能しますか?