MOVE SEMANTICS

곧 사라질 객체라면 복사하지 말고 자원을 넘겨받는다

move 의미론은 큰 버퍼나 핸들을 새로 복사하지 않고 소유권을 이전해 성능 비용을 줄이는 C++11의 핵심 도구입니다.

std::move(obj)
→ xvalue로 캐스팅
→ 이동 생성자/대입 후보
Lvalue이름과 주소가 있는 객체입니다. 기본적으로 훔쳐 가면 안 되는 값으로 취급합니다.named
Rvalue / xvalue임시 객체이거나 만료될 값입니다. 자원을 넘겨도 프로그램 의미가 자연스럽습니다.expiring
T&&rvalue 참조는 이동 가능한 값을 받는 문입니다. 이동 후 원본은 유효하지만 값은 특정하지 않습니다.steal resource
복사: 새 자원을 만들고 내용을 복제하므로 큰 객체에서 비용이 큽니다.
이동: 포인터와 핸들을 이전하고 원본을 비워 중복 해제를 막습니다.