の結果を挿入した後、ベクターに表示されます。ごみは、私はこのように定義された演算子を持つオブジェクトを持っているオペレータ
ベクトル内に加算結果を直接代入した後、その内部にガベージが表示されます。
P p1(1.0, 0.0, 0.0);
P p2(0.0, 0.0, 0.0);
vector<P> v(1);
v[0] = p1 + p2; // v[0] now contains garbage.
私が変数を使って行う場合、すべてが期待通りです。
vector<P> u(1);
P q = p1 + p2;
u[0] = q; // u[0] contains correct value.
このような現象は、どのような理由が考えられますか? 2つのケースの違いは何ですか?
"*コピーまたは代入演算子がありません。*"特に定義していないことを意味しますか?その場合、暗黙的にコンパイラが定義されている可能性があります。それとも、あなたはあなたの道を離れてそれを無効にしたのですか? – ildjarn
@ildjarn私はそれらを明確に定義していないと言っていました。それをもっと明確にするために私の質問を編集しました。 – Artium
違うのは、上書きされた前に無効/削除された一時的なものから読み取られた2番目の例です。 (両方ともルールに反し、一時は死んでいる) –