소유 객체
MyVector vec1(10);
힙 메모리와 크기 정보를 정상적으로 소유합니다.
`std::move(vec1)`은 `vec1`을 rvalue처럼 다루게 만드는 캐스팅입니다. 실제 자원 이전은 이동 생성자나 이동 대입 연산자가 수행합니다.
MyVector vec1(10);
힙 메모리와 크기 정보를 정상적으로 소유합니다.
std::move(vec1)
컴파일러에게 이 객체의 자원을 가져가도 된다고 표현합니다.
MyVector vec3 = ...;
포인터와 크기 정보가 새 객체로 이전됩니다.
vec1.data = nullptr;
원본은 유효하지만 내용은 지정되지 않은 상태가 됩니다.
`vec1`이 자원을 소유하고 소멸자가 해제 책임을 가집니다.
`vec3`이 자원을 소유하고 `vec1`은 재초기화 후 사용하는 편이 안전합니다.
move 이후 상태 `std::move` 이후 원본 객체에 기대할 수 있는 것은 소멸 가능성과 대입 가능성 정도입니다.