Move Semantics는 C++11부터 도입된 기능으로 자원을 효율적으로 관리하기 위해서 생겨났다.기존에는 값을 복사해서 사용하거나 Reference를 이용해 주소를 저장해놓고 메모리에 접근해 값을 사용했다. 하지만 복사를 하는 것은 비용이 적지 않다. 심지어 객체가 파일, 소켓 같은 자원을 가지고 있다면 더 비용이 크다. 그렇다고 필요한 모든 객체에서 해당 객체의 주소를 들고 있다면 이후 객체를 해제시킬 때 어떤 객체가 해제시켜야 할지 문제가 생길 수 있다.이러한 문제를 해결하기 위해 소유권을 이전하는 Move Semantics가 등장하였다. Move Semantics는 rvalue의 references를 이용해서 이루어진다. 기존의 객체의 소유권(주소)를 이전하기 때문에 기존의 객체는 빈 객체가 ..