C 11에서 "Moved From" 개체의 유효한 상태
질문:
In C 11에서는 객체가 이동되면 지정되지 않은 상태가 됩니다. "이동한" 객체가 유효한 상태를 유지하려면 어떤 조건을 충족해야 합니까?
답변:
이동한 객체의 유효성은 유형의 사양과 문서화.
표준 라이브러리 유형의 경우 이동된 객체는 지정되지 않았지만 유효한 상태에 배치됩니다. 즉, 해당 유형에 대한 모든 표준 요구 사항을 충족합니다. 달리 명시하지 않는 한. 사용자는 유효한 작업을 확인하기 위해 상태를 쿼리해야 합니다.
개발자 정의 유형의 경우 유효한 상태를 구성하는 요소와 이동된 개체에 대해 허용되는 작업을 정의하고 문서화합니다.
제공된 pimpl 관용구 예:
class Foo { std::unique_ptr<FooImpl> impl_; };
Foo 객체에서 이동하면 do_stuff 작업이 무효화되어 정의되지 않은 동작이 되도록 지정할 수 있습니다. 이동하는 것은 이동한 객체에 대해 더 이상 작업을 수행할 수 없음을 의미하기 때문에 합리적입니다.
또는 이동한 Foo 객체에 대한 특정 상태를 정의하여 표준 라이브러리의 개념 요구 사항이 다음과 같도록 할 수 있습니다. 아직도 만났습니다. 이렇게 하면 정의되지 않은 동작 없이 표준 라이브러리에서 이동된 Foo 객체를 사용할 수 있습니다.
표준 라이브러리 개념에서는 이동된 객체를 고려하지 않습니다. 따라서 이동된 개체가 해당 개념에 따라 유효한 상태로 유지되지 않는 경우 표준 라이브러리와 함께 사용하면 정의되지 않은 동작이 발생합니다.
위 내용은 C 11에서 이동된 개체의 유효성을 보장하는 조건은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!