나는 다음과 같은 코드가 C++ :(11)의 shared_ptr을 할당
#include <memory>
int main(void)
{
std::shared_ptr<int> currInt(nullptr);
std::shared_ptr<int> newInt(new int);
currInt = newInt;
return 0;
}
그것은이는 것으로 나타났다을 유효하지 않은 C++ 11 (이 초안 버전으로 사용) 및 할당 생성자가 이제 이동 의미를 사용합니다. 내가 이해하지 못하는 것.
누군가 제발 그것을 어떻게 만들 수 위의 코드를 수정 줄 수 설명해 주시겠습니까?
과제가 이동 의미론을 사용해서는 안됩니다. 'unique_ptr'이 무엇을위한 것입니까? 예상치 못한 행동은 정확히 무엇입니까? –
C++ 11에서는 shared_ptr의 복사 생성자가 이동 생성자를 위해 삭제됩니다. 나는 이동의 의미를 많이 이해하지 못한다. Clang 3.0에서 이것을 컴파일하려고하면 오류를 직접 볼 수 있습니다. – Jookia
나는 그것이 그렇게 믿지 않는다. [이 페이지] (http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr)를 확인하십시오. 내 지식으로는 정보가 최신 정보입니다. 또한이 코드는 GCC 4.6.1에서 컴파일됩니다. 이것이 나에게 의미가없는 가장 큰 이유는 이동 의미론에서 이동 된 객체가 "빈 상태"로 남아 있어야한다는 것입니다. 이것은'shared_ptr'에서는 분명히 바람직하지 않습니다. 내가 틀렸다면 나를 바로 잡아주세요. –