問題タブ [ctor-initializer]

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 に答える
148 参照

c++ - コンストラクター初期化子でメンバーポインターを別のメンバーのアドレスに割り当てるのは標準の C++ ですか?

これは規格に準拠していますか?

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

c++ - コンストラクター初期化子でのメンバーのメンバー関数の使用

初期化子リストを使用して次のようなことに何度か遭遇しましたが、うまく説明できませんでした。以下が正確に失敗する理由を誰でも説明できますか (タイプミスをキャッチするコンパイラがないので、ご容赦ください)。

初期化子リストの上位で初期化されたメンバーのメンバー関数を呼び出そうとすると、seg fault が発生します。これは既知の問題 (またはおそらく設計によるもの) であることを思い出すようですが、よく説明されているのを見たことがありません。添付の例は単純な古いデータ型で作成されBar::m_myIntていますが、デフォルト (空の) コンストラクターを持たない別のオブジェクトに置き換えると、問題はより現実的になります。誰でも私を啓発できますか?

0 投票する
6 に答える
51597 参照

c++ - const 参照クラス メンバーは、一時オブジェクトの寿命を延ばしますか?

なぜこれを行うのですか:

次の出力を与える:

答えは次のとおりです。

それ以外の:

答えは:4

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

c++ - 空の初期化子は、デフォルトの初期化積分メンバーに適していますか?

GManのコメントを読んだだけです

優先する必要があります

NULL最初の例には欠けていることに注意してください。

GManは正しいですか?これは主観的なものかもしれないので、「デフォルトの初期化には空の初期化子を使用しますか?」より適切かもしれません。

また、空の初期化子を好む場合、これは他の統合メンバーに適用されますか?

もちろん、一方が他方よりも優先されるべき理由の説明であなたの視点を擁護してください。

0 投票する
8 に答える
2466 参照

c++ - const フィールドの複雑な初期化

次のようなクラスを考えてみましょう:

実行時に 3 つの定数を計算するルーチン (ComputeImportantConstants) があります。計算がかなり複雑で、本質的に 3 つの値すべてを一度に生成するとします。さらに、結果はビルド構成に依存するため、結果をハードコーディングすることはできません。

これらの計算された値をクラスの対応する const double フィールドに格納する賢明な方法はありますか?

そうでない場合、C++ でそのようなクラスを宣言するより自然な方法を提案できますか?

C# では、ここで静的コンストラクターを持つ静的クラスを使用しますが、C++ ではそれはオプションではありません。また、ImportantConstant1..3 を非 const フィールドまたは関数呼び出しにすることも検討しましたが、どちらも劣っているようです。

私が見つけた const フィールドを初期化する唯一の方法は、初期化子リストを使用することですが、そのようなリストで複数出力計算の結果を渡すことはできないようです。

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

c++ - クラスフィールドはどのように初期化できますか?

少し基本的な質問ですが、決定的な答えを見つけるのに苦労しています。

初期化子リストは、メソッドでの代入を除いて、C ++でクラスフィールドを初期化する唯一の方法ですか?

間違った用語を使用している場合は、次のように言います。

編集:特に、構造体初期化子を使用して構造体フィールドを初期化するための優れた方法はありますか?例えば:

0 投票する
5 に答える
825 参照

c++ - 初期化子リストにより変数が初期化されませんか?

次のような唯一のコンストラクターを持つクラスがあります。

メソッドのどこかに、このifステートメントがあります

そして、Valgrind はその行について次のように述べています。

条件付きジャンプまたは移動は、初期化されていない値に依存します

しかし、初期化子リストで初期化しました! そして、私はヴァルグリンドを信じていると思います。なぜなら、すべてがうまくいくこともあれば、何も起こらないこともあるからです....だから、おそらくcounter間違った値を取得して、カウンターが10に達するまでに時間がかかります.

いくつかのエラーに対してカウンターを使用しているコードを既にチェックしています。しかし、C ++ステートメントで「値の初期化を解除」することはできないと思います...

これらは、私が使用するすべての行です(初期化リストを除く)counter

Valgrind は に対して同じ出力を与えますscreenAlpha

両方の変数があり、クラスprivateがありません....friend

それで、何が起こっているのですか?問題は何ですか?

編集:

私は値を出力しました:
コンストラクターでは、それは正しいです:0
私の方法では、それはゴミでした. 次のようなランダムな値を優先しました。

  • -97298.8...
  • -106542.2...

print ステートメントは、へのすべての割り当てが含まれるメソッドの最初の行ですcounter

2番目の編集:

これが問題になる可能性があります!??

私のGameクラスでは、次IntroScreenのように初期化します。

viewIntroScreenはここで、呼び出された の抽象スーパータイプへのポインタViewです。

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

c++ - What does the colon mean in a constructor?

Possible Duplicates:
C++ weird constructor syntax
Variables After the Colon in a Constructor
What does a colon ( : ) following a C++ constructor name do?

For the C++ function below:

What does the colon (":") tell the relationships between its left and right part? And possibly, what can be said from this piece of code?

0 投票する
5 に答える
1675 参照

c++ - Ctor Initializer:自己初期化によりクラッシュが発生しますか?

本番環境でのクラッシュのデバッグに苦労しました。セマンティクスについてここの人々に確認したかっただけです。次のようなクラスがあります...

誰かが初期化を変更して、コードセマンティクス内で合理的に正しいctor初期化リストを使用しました。初期化の順序とその初期値は、とりわけ正しいものです。したがって、クラスは次のようになります...

しかし、コードが突然クラッシュし始めました!このコードの一部に初期化の長いリストを分離しましたm_str(m_str)リンクテキストで確認しました。

クラッシュする必要がありますか?規格はこれについて何と言っていますか?(それは未定義の動作ですか?)

0 投票する
7 に答える
713 参照

c++ - 基本クラスを破壊せずに呼び出された基本クラスのデストラクタ!

2つの質問:

  1. オブジェクトを破棄するのではなく、なぜAのデストラクタが通常の関数のように呼び出されるのですか?(または、子クラスのデストラクタが基本クラスのデストラクタを呼び出した場合にのみ基本クラスが破棄されるというのは、ある種のルールですか?)このサンプルコードを試して、デストラクタがどのように機能するかを調べました。したがって、デストラクタ関数を呼び出してもオブジェクトが破棄されない場合は、デストラクタを呼び出す他の種類の呼び出しが明らかに存在し、その場合にのみオブジェクトが破棄されます。そのような電話の何がそんなに特別なのか、そしてそれは何の電話なのか?
  2. BのコンストラクターにAの初期化リストを作成する方法はありますか?このようなもの:

    /li>