問題タブ [initialization-list]
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++ 自己
私はこのコードスニペットを持っています
そして、コピーコンストラクターを呼び出すと、機能しません(オブジェクトを作成および破棄します)。
編集:私が使用する場合
私は得るtype 'class Osoba' is not a direct base of 'Osoba'
これはどのように行われますか?
c++ - 自明でないコンストラクタを持つオブジェクトの stl ベクトルを初期化するにはどうすればよいですか?
次のクラスがあるとします。
そして、このクラスにはデフォルトの自明なコンストラクターがないとしますMyInteger()
。int
何らかの理由で初期化するために常に を提供する必要があります。そして、コードのどこかでvector<MyInteger>
. MyInteger
これで各コンポーネントを初期化するにはどうすればよいvector<>
ですか?
関数内の通常の変数の 2 つの状況 (おそらく解決策は同じですが、とにかく説明します) があります。
クラス内のデータとして:
初期化リストでそれを行うことは可能ですか、それとも MyFunClass(int, int) コンストラクターで手動で初期化を記述する必要がありますか?
これは非常に基本的なことのように思えますが、どういうわけか本の中でそれを見逃しており、Web で見つけることができません。
c++ - 派生クラスの初期化リストから基本クラス コンストラクターを呼び出す順序
上記は単なる擬似コードです。実際には、基本コンストラクターを呼び出す順序が重要であることを知りたかったのですか?
いずれかのケースによって引き起こされる悪い動作(特にコーナー ケース) はありますか? 私の質問は、コーディング スタイルではなく、より技術的な側面に関するものです。
c++ - 初期化リストで、追加のコピーを作成せずにデータが割り当てられるのはなぜですか?
Parashiftは初期化リストについて詳しく説明していますが、ctor本体で割り当てる前に変数の追加コピーが作成される理由については説明していませんが、初期化リストを介して割り当てた場合、追加コピーは作成されません。
前者は代入前の一時的なiの作成を回避するため、i++の代わりに++iを使用するというアドバイスにも出くわしました。コンストラクター本体に割り当てられたPODについても同じですか?割り当てが行われる前に一時変数が作成されますか?
別の言い方をすれば、コンパイラが変数の追加コピーを作成する必要があるのはなぜですか?変数を直接割り当てることができないのはなぜですか?
なんで?
c++ - 一意の値を持つベクトルを生成する方法は?
一意のオブジェクトをベクトルに生成する次の例があります。
メインをこれに変更すると:
次に、タイプ A の 1 つのオブジェクトがすべてのベクター要素にコピーされます。
すべての一意のオブジェクトを持つベクトルを作成する方法はありますか (最初の例のように)?
より明確にするために:ベクトルを含むクラスがあります。このベクトルには、すべての一意のオブジェクトが含まれている必要があります (1 つのオブジェクトのコピーではありません)。そして、コンストラクターの本体ではなく、初期化リストで初期化したいと思います。
java - Java に C++ のような初期化子リストがないのはなぜですか?
C++ では、コンストラクターの実行を開始する前に、初期化子リストを使用してクラスのフィールドを初期化できます。例えば:
Java に同様の機能がない理由が気になります。Core Java: Volume 1によると:
C++ は、この特殊な構文を使用してフィールド コンストラクターを呼び出します。Java では、オブジェクトにはサブオブジェクトがなく、他のオブジェクトへのポインタしかないため、その必要はありません。
ここに私の質問があります:
「オブジェクトにはサブオブジェクトがないため」とはどういう意味ですか? サブオブジェクトが何かわかりません (調べてみました)。スーパークラスを拡張するサブクラスのインスタンス化を意味しますか?
Java に C++ のようなイニシャライザ リストがない理由については、Java ではすべてのフィールドがデフォルトですでに初期化されているため、また Java が
super
キーワードを使用してスーパー (または C++ 用語ではベース) クラス コンストラクタを呼び出すためであると考えられます。 . これは正しいです?
c++ - コンストラクターの初期化リスト
コンストラクターで初期化リストを使用する利点は、クラス型オブジェクトの余分なコピーがないことだと聞いたことがあります。しかし、クラス T コンストラクター内の次のコードは何を意味するのでしょうか? 割り当てにコメントして初期化リストを使用すると、違いは何ですか?
c++ - Qt C++ 初期化リストの混乱
私は Qt (および C++ の程度は低い) を使い始めており、続行する前に基本コードを完全に理解していることを確認したかったのです。初期化リストの最初の要素が、デフォルト以外の継承されたコンストラクターを選択するために使用されていることを理解しています。
しかし、 ui(new Ui::TestAppMain) の目的は何ですか? コンストラクターで ui が TestAppMain の新しいインスタンスに設定されているため、無限ループになるように思えますが、そうではありません。
c++ - 複数の変数のC++初期化リスト
リストを初期化する方法を学ぼうとしています。
以下に簡単なクラスがあり、変数のリストを初期化しようとしています。最初のMonth(int m): month(m)
作品。その行の下で、複数の変数を使用して同様のことを実行しようとしています。これはその形式で可能ですか?ワンライナーから離れる必要がありますか?
明らかに、私はこれを行う方法について多くの手がかりを持っていません、どんなガイダンスもいただければ幸いです、ありがとう
c++ - メンバー変数
定義されていないstatic
が、定義する必要があるメンバー変数がクラスに存在することはありますか (メモリを予約するために静的変数が定義されているため)。もしそうなら、例を挙げてもらえますか?そうでない場合、静的メンバーだけが定義可能なメンバーであるのはなぜですか?
BJARNE は、メンバーをオブジェクトとして使用する場合は、それを定義する必要があると述べました。
しかし、メンバー変数を明示的に定義すると、プログラムでエラーが表示されます。