問題タブ [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 に答える
39 参照

c++ - 別のクラスから直接インスタンス化されると、メンバーの整数が変更されます

A と B の 2 つのクラスがあるとします。A には整数があり、コンストラクターからコンソールに表示されます。また、B のメンバ オブジェクトも持ちます。B は A と同じように整数を表示しますが、A が作成するときに A から整数を取得します。整数は const 値であるため、B のコンストラクターに直接渡す必要があります。

したがって、A が独自の整数を B に渡すと、A と B の両方がコンソールに同じ数値を表示すると予想されます (1)。代わりに、B のコンストラクターがその整数を出力すると、-858993460 が表示されます。何故ですか? A が B オブジェクトをインスタンス化し、B の const int に整数を渡すと、整数の値が変わるのはなぜですか?

main.cpp

ああ

Bh

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

c++ - C++クラスのQtクラスデータメンバーは、使用する前に初期化する必要がありますか?

多くの記事や書籍で提案されている多くの C++ プログラミングのベスト プラクティスがあります。以下は、C++ クラス データ メンバーに関連するサブセットです。

  1. オブジェクトを使用する前に、オブジェクトが初期化されていることを確認してください。
  2. すべてのコンストラクターがオブジェクト内のすべてを初期化するようにしてください。
  3. 通常、各コンストラクターの本体よりも初期化子リストでデータ メンバーを初期化する方が効果的です。
  4. 初期化子リストでは、データ メンバーは宣言されている順序でリストする必要があります。

Qt クラス型のデータ メンバーを持つ次のクラスを検討してください。

上記のベスト プラクティスを適用すると、コンストラクター コードは次のようになります。

ただし、すべての Qt クラス データ メンバを初期化する必要はないという印象があります。しかし、私はこれを 100% 確信しているわけではありません。一部の開発者は、すべてのデータ メンバーを初期化リストに入れることで、初期化する必要があるいくつかの重要なデータ メンバーの初期化を省略することを避けることができると主張しています。ただし、これが本当に懸念事項である場合は、初期化する必要のないデータ メンバーごとにコメント行を追加することをお勧めします。たとえば、次のようになります。

要約すると、Qt クラスのデータ メンバーを初期化する必要がある場合と、初期化が不要な場合とその理由を知りたいと思います。ありがとう!

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

c++ - ネストされたクラス。エラー: パラメーター宣言子が必要です - 内部クラス インスタンス用

C++ でネストされたクラスについて学び始めました。ここに貼り付けた簡単なコードを試して、ネストされたクラスがどのように機能するかを確認しました。しかし、コンパイルは私が理解できないいくつかのエラーで終了します。

ファイル: check.cpp

コンパイル時に発生するエラーg++ -Wall -std=c++11 -o check.out check.cpp

このエラーの背後にある適切な説明と、このエラーを克服する方法が必要です。

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

ios - Structs でメンバー初期化子はどのように機能しますか? (スイフトで)

私は完全な初心者なので、正しい質問をしているかどうかさえわかりません。しかし、 for ループのコードの " User(name: "John ...) " 部分が機能する理由を理解するのに苦労しています

}

しかし、これはそうではありません

}

CASE1 がどのように機能するかを理解するために、このコードの単純なバージョン、つまり CASE2 を実行しました。どちらの場合もまったく同じことが起こっていますが、[ User(..arguments..) について] 2番目のケースでは「Declaration Expected」というエラーが発生します。ポール卿 (スタンフォード cs193p) は、これはかなり単純なデータベースだと言いましたが、私はこの問題を 6 時間以上解明しようと試みてきました。

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

c++ - メンバー初期化リストでクラスメンバーのポインタを渡す方法は?

HighWaterDetector という名前のクラスがあります。

コンストラクターを使用:

HighWaterDetector のメンバー初期化リストで Output のインスタンスを初期化しようとしていますが、クラス HighWaterDetector のメンバーでもある NCD2Relay のインスタンスへのポインターを渡す必要がある Output です。出力コンストラクター内でプログラムがクラッシュします。これは間違った方法ですか?私は何を間違っていますか?

出力クラス:

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

c++ - unique_ptr を初期化できません

unique_ptrプロジェクトに次のコードがありますが、行が間違っているというエラー C2059, syntax error "new" が表示されます。

ここで何が起きてるの?

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

c++ - メンバーの初期化リストと代入/コピー コンストラクター (ブーストのdeadline_timer)

次のクラス宣言があります。

クラスの次のコンストラクターは正常にA機能します。

しかし、私がこれを書くとき:

次のエラーが表示されます。

エラー: '(boost::asio::deadline_timer {aka boost::asio::basic_deadline_timer}) の呼び出しに一致しません (boost::asio::io_service&)

おそらく、コピー コンストラクターboost::asio::deadline_timerが定義されていないためです。しかし、メンバー初期化リストの場合はどうなるのでしょうか? コピーコンストラクタを使用していませんか?

クラスコンストラクター内で割り当て/コピーコンストラクターを使用する場合と比較して、メンバー初期化リストで使用されるメカニズムは何かに関して、私の質問はおそらくより一般的にすることができます。