C 11에서 이동된 개체의 유효한 상태 이해
C 11의 이동 의미 체계는 중요한 개념을 소개합니다. 에서 옮겨지고 있습니다. 그러나 이동된 객체가 충족해야 하는 정확한 조건은 혼란스러울 수 있습니다.
The Issue with pimpl Objects
클래스가 객체를 래핑하는 pimpl 관용어를 생각해 보세요. 구현 개체에 대한 포인터입니다. Foo 객체(std::unique_ptr
표준 라이브러리 이동 상태
C 표준은 표준 라이브러리 유형의 이동 개체가 "지정되지 않았지만 유효한 상태"에 배치되도록 정의합니다. 상태." 즉, 유효한 전제 조건이 있는 경우 작업을 수행할 수 있습니다.
단, 비표준 유형의 경우 이동 후 허용되는 유효한 상태와 작업을 정의하고 문서화해야 합니다.
pimpl의 유효한 상태 정의
Foo 예에서 Foo에서 이동하면 do_stuff 함수가 잘못되었습니다. 이렇게 하면 이동된 개체에서 실수로 호출하는 것을 방지할 수 있습니다.
동적 할당 방지
유효한 상태를 확인할 때 동적 할당의 오버헤드를 방지하려면 다음을 고려하세요. "null 개체" 패턴을 사용합니다. 여기에는 객체가 유효하지 않은 상태에 있을 때 사용되는 기본 FooImpl이 포함됩니다.
개념 및 이동된 객체
마지막으로 이동된 객체에 유의하세요. 여전히 표준 라이브러리 개념의 요구 사항을 충족해야 합니다. 유형이 유효한 상태로 유지되지 않는 경우 표준 라이브러리 함수와 함께 사용하면 정의되지 않은 동작이 발생할 수 있습니다.
위 내용은 C 11에서 이동된 개체의 유효한 상태는 무엇이며 이를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!