의 결과를 삽입 한 후 벡터에 나타납니다.쓰레기 I는 다음과 같이 정의 된 연산자를 사용하여 객체를 작업자
벡터 내부에 추가 결과를 직접 지정하면 내부에 가비지가 나타납니다.
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.
이러한 동작의 원인은 무엇입니까? 두 경우의 차이점은 무엇입니까?
"복사 또는 할당 연산자가 없습니다. *"특별히 정의하지 않았습니까? (이 경우 컴파일러에서 암시 적으로 정의 할 가능성이 높습니다)? 또는 당신이 그들을 무력화 시키려고 나갔다는 것입니까? – ildjarn
@ildjarn 나는 그것들을 특별히 정의하지 않았다고 말하고자했다. 더 명확하게하기 위해 내 질문을 수정했습니다. – Artium
차이점은 겹쳐 쓰여지기 전에 유효하지 않은/삭제 된 임시 읽기에서 읽은 두 번째 예제입니다. (둘 다 규칙에 어긋나고 임시는 죽었습니다.) –