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

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

c++ - コンストラクター デリゲートの C++ 呼び出し関数

C++11 では、コンストラクターを初期化リスト内の別のコンストラクターに転送できます。

この質問のように、初期化リストで関数を呼び出しても問題ありません

コンストラクターデリゲートで関数を呼び出しても問題ありませんか?

私はこのようなコードを試しました:

上記のコードでは、空のファイルを渡すだけで、b の初期化中に "Got" が 1 つだけ出力されます。

================================================== =====================

string(argv[1]) を argv[1] に置き換えると機能しますが、その理由は何ですか?

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

c++ - エラー C3074: 配列は初期化リストでのみ初期化できます

私は、POD、STL、および配列などの複合型用のささいな (きれいな) プリンターに取り組んでいます。そうしている間、私も初期化リストをいじっていて、次の宣言に出くわしました

VC2013 と G++ 4.8 の両方が満足していないようで、一貫したエラー メッセージが表示されますが、どちらの場合も私にとってはあまり役に立ちません。

VC++ の場合: error C3074: an array can only be initialized with an initialize-list

G++ 4.8 の場合: error: array must be initialized with a brace-enclosed initialize

ここでは初期化リストを使用できないか、構文がまったく正しくありませんか?

同様の面で、次の構文は有効なようです

初期化リストで考えられる問題は何ですか?

  • std::arrayC型配列の代わりに 使用する必要があることは理解していますが、実験中です。
  • これをいじりたくない場合は、ここにIDEONEバージョンがあります
  • 注記また、標準を参照していただけると非常に有益です。
0 投票する
1 に答える
897 参照

c++ - コンストラクターの初期化リストでディープ コピーを作成するにはどうすればよいですか。c++

これは、リスト クラスのノードのコンストラクタです。初期化リストの別のクラスである winery のディープ コピーを作成する必要があります。アイテムはワイナリーのインスタンスです。

ワイナリーのコンストラクター:

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

c++ - C++: 初期化リスト内の 1 つのクラス メンバーに対して 2 つのコンマ区切りの値を使用する

いくつかの C++ コードがあります。:OTMixerMgr(OTMediaType_Audio, oBridgeInfo)初期化リスト ( )で 1 つのクラス メンバーに対して 2 つの値を使用できる理由を知りたいのですが。通常、1 つのクラス メンバーに対して 1 つの値のみが使用されるため、
ClassName::ClassName(): fisrtMember(firstValue) {...}.

このコードは、Telepresence プロジェクトのhttps://code.google.com/p/telepresence/source/browse/trunk/source/OTMixerMgrAudio.cc?r=118の 31 行目から取得したものです。

ありがとう!

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

c++ - 演算子 new によるメモリ割り当てとデータによる初期化

私のプロジェクトでは、100 万の入力があり、100 万の入力まで、検索/並べ替えアルゴリズムをさまざまな数の入力と比較することになっています。メモリの割り当てとデータの初期化を一緒に行いたいのですが、それができないことに気づきました。だから私はこのようにすることにしました。

br>
しかし、N = 500000 のような膨大な数のオーバーフローがあります。では、これら 2 つを組み合わせる方法はあります か?(オーバーフローなしでデータの初期化あり)

p>

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

c++ - 初期化リストの配列メンバーをゼロで初期化する

すべてゼロに初期化したい配列メンバーを持つクラスがあります。

ローカル変数の場合、ゼロ初期化する簡単な方法があります (こちらを参照)。

また、ここでm_array説明されているように、デフォルトで初期化されたintはランダムなガベージを残すだけなので、クラスメンバーは明らかに初期化する必要があります。

ただし、メンバー配列に対してこれを行うには、次の 2 つの方法があります。

括弧付き:

ブレース付き:

どちらも正しいですか?C++11 の 2 つの違いはありますか?

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

c++ - const メンバ変数の初期化

次のようなものに要約される C++ コードがあります。

意味的には、bar および baz メンバー変数は、初期化後に変更されるべきではないため、const である必要があります。ただし、そのようにするには、割り当てるのではなく、初期化リストで初期化する必要があるようです。明確にするために、なぜこれを行う必要があるのか​​ を理解しています。問題は、次の望ましくないことのいずれかを行わずに、コードを初期化リストに変換する方法が見つからないように見えることです。

  • 2 回呼び出すcomplex_method(パフォーマンスが低下する可能性があります)
  • Foo クラスへのポインターを追加します (クラスのサイズが不必要に大きくなります)。

これらの望ましくない状況を回避しながら、変数を const にする方法はありますか?

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

c++ - 初期化リストを介して参照型を初期化することは可能ですか?

まず、これが悪い質問である場合はお詫び申し上げます。私はC++が初めてです。

インターフェイス (純粋仮想関数から構築されたクラス) である参照型フィールドを含む一連のクラス ヘッダーがあります。クラスを初期化して、デフォルトで参照型フィールドが特定の「具体的な」派生クラスに設定されるようにしたいと思います。これは、デフォルトのコンストラクター (パラメーターなし!) を使用して行われます。また、この初期化を別の「具体的な」派生クラスでオーバーライドできるようにしたいと考えています。

これまでのところ、次のようなクラス ヘッダーがあります。

しかし、私は実装に苦労しています:

更新 この潜在的な設計を使用しても効率的ではないことがわかりました。のデフォルトconst IBar & barは、ほとんどの場合、フィールドを持つすべてのクラスで同じオブジェクトになりますが、ユニット テストは例外です。必要に応じてモック クラスを交換できるようにしたいと考えています。

スタック上に同じオブジェクトを常に作成したくないので、これらのオブジェクト グループのファクトリで作業します。

次のように、単一のコンストラクターのルートをたどりました。

誰かが初期化リストの一時オブジェクトへのクラス参照フィールドの設定に関する適切な回答を提供したい場合 (つまり、const フィールドに対してのみ行うことができ、コンストラクターの外側の範囲外になります)、私はそれを次のようにマークします。受け入れられた答え。または、適切な複製としてマークします。