問題タブ [member-initialization]

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 投票する
2 に答える
311 参照

c++11 - VS2013 で匿名構造体のブレースまたはイコール初期化子が機能しない

構造体内の匿名構造体のブレースまたはイコール初期化子は、VS2013 によって生成された出力に対して機能しません。コードがあります:

Linux で次のコマンドを使用してコンパイルします。

(最適化フラグを追加しても結果には影響しません)

期待される結果:

変。VS2013 でそれを実行すると、ガベージ値が返されます。C++11 標準を正しく実装するという点で、これについて正しいのは誰ですか? これがGCCのせいだとは思えません。

役に立たないVSコンパイラオプションと関係がありますか? Windows 拡張機能? MS が作成したバグのため、構造体のデフォルト コンストラクタを作成する必要がありますか? これはばかげています。

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

c++ - コンストラクターで初期化子リストを整理するより良い方法

constメンバーまたは既定のコンストラクターを持たないメンバーを初期化する前に、クラス コンストラクターの引数に対して何らかの処理を行う必要がある場合があります。

たとえば、Java ではこれを行うことができます (理由は聞かないでください。これは単なる例です)。

C++ では、同じようになります

そして、複雑な初期化を必要とするメンバーが増えると、初期化リストはますます巨大になります。この問題を回避する方法はありますか?

UPD 1:
メンバーにコピー コンストラクターがない場合はどうなりますか? 例のように、各引数の計算を関数に抽出するだけですか?

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

c++ - 些細なデフォルト コンストラクターは、ここでデフォルト メンバー初期化子を尊重する必要がありますか?

次のコードを検討してください。

struデフォルトのメンバー初期化子がありますが、C++14 以降はまだ集約型としての資格があることに注意してください。std::atomic自明なデフォルト コンストラクタがあります。標準によると、のメンバーasをゼロに初期化する必要がありますか? clang 6.0.0 はこれを行いません (こちらを参照) が、gcc 7.2.0 はそうです (こちらを参照)。