仅有的幸福2017-05-16 13:30:05
참조에 대한 잘못된 이해가 있습니다
getTestData(testMap, 1, tempData1);
이 명령문은 tempData1을 testMap[1]에 대한 참조로 만들지 않습니다. 이 함수는 단지 함수의 데이터에 대한 모든 작업이 tempDada1에 동일하게 반영되도록 할 뿐입니다. , 따라서 데이터는 tempData1에 대한 참조가 됩니다. 그리고 tempdata1은 testMap의 어떤 요소도 전혀 참조하지 않으므로 tempdata1을 변경해도 아무런 효과가 없습니다.
某草草2017-05-16 13:30:05
getTestData 함수에서 할당문 data=it-<second;는 클래스의 복사 생성자를 호출합니다. 작성하지 않았기 때문에 기본 복사 생성자가 호출됩니다. 즉, 할당이 등호 오른쪽에 있는 개체를 왼쪽 개체에 바인딩하지 않지만 복사가 발생합니다. 따라서 teaData1에 대한 변경 사항은 원래 개체를 변경하지 않습니다.
해결책은 원본 객체를 반환하도록 복사 생성자를 재정의하는 것입니다. 포인터를 사용하는 방법도 있습니다.