더북(TheBook)

우리는 2.3.5절에서 이동 문법(Move Semantics)을 설명할 것이다. 지금 당장은 이렇게 이해하자. 복사(Copy)는 데이터를 복제하는 반면 이동(Move)은 원본에서 대상으로 데이터를 전송한다. 이 예에서는 참조한 메모리의 소유권을 먼저 dp에서 dp2로 전달한 다음 dp3으로 전달한다. dpdp2는 이후에 nullptr가 되고, dp3의 소멸자는 메모리를 해제한다. 같은 방식으로, unique_ptr를 함수에서 반환할 때 메모리의 소유권을 전달한다. 다음 예제에서 dp3f()에 할당한 메모리를 대신 사용한다.

std::unique_ptr<double> f()
{    return std::unique_ptr<double>{new double};    }

int main()
{
    unique_ptr<double> dp2;
    dp3 = f();
}

이 경우 함수의 결과는 이동될 임시 값이므로 move()가 필요하지 않다(다시 말하지만, 자세한 내용은 2.3.5절을 참조하라).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.