우리는 2.3.5절에서 이동 문법(Move Semantics)을 설명할 것이다. 지금 당장은 이렇게 이해하자. 복사(Copy)는 데이터를 복제하는 반면 이동(Move)은 원본에서 대상으로 데이터를 전송한다. 이 예에서는 참조한 메모리의 소유권을 먼저 dp에서 dp2로 전달한 다음 dp3으로 전달한다. dp와 dp2는 이후에 nullptr가 되고, dp3의 소멸자는 메모리를 해제한다. 같은 방식으로, unique_ptr를 함수에서 반환할 때 메모리의 소유권을 전달한다. 다음 예제에서 dp3은 f()에 할당한 메모리를 대신 사용한다.
std::unique_ptr<double> f() { return std::unique_ptr<double>{new double}; } int main() { unique_ptr<double> dp2; dp3 = f(); }
이 경우 함수의 결과는 이동될 임시 값이므로 move()가 필요하지 않다(다시 말하지만, 자세한 내용은 2.3.5절을 참조하라).