> 백엔드 개발 > C++ > C 11에서 이동된 개체의 유효성을 보장하는 조건은 무엇입니까?

C 11에서 이동된 개체의 유효성을 보장하는 조건은 무엇입니까?

DDD
풀어 주다: 2024-12-09 12:06:15
원래의
801명이 탐색했습니다.

What Conditions Ensure the Validity of a Moved-From Object in C  11?

C 11에서 "Moved From" 개체의 유효한 상태

질문:

In C 11에서는 객체가 이동되면 지정되지 않은 상태가 됩니다. "이동한" 객체가 유효한 상태를 유지하려면 어떤 조건을 충족해야 합니까?

답변:

이동한 객체의 유효성은 유형의 사양과 문서화.

표준 라이브러리 유형의 경우 이동된 객체는 지정되지 않았지만 유효한 상태에 배치됩니다. 즉, 해당 유형에 대한 모든 표준 요구 사항을 충족합니다. 달리 명시하지 않는 한. 사용자는 유효한 작업을 확인하기 위해 상태를 쿼리해야 합니다.

개발자 정의 유형의 경우 유효한 상태를 구성하는 요소와 이동된 개체에 대해 허용되는 작업을 정의하고 문서화합니다.

제공된 pimpl 관용구 예:

class Foo {
    std::unique_ptr<FooImpl> impl_;
};
로그인 후 복사

Foo 객체에서 이동하면 do_stuff 작업이 무효화되어 정의되지 않은 동작이 되도록 지정할 수 있습니다. 이동하는 것은 이동한 객체에 대해 더 이상 작업을 수행할 수 없음을 의미하기 때문에 합리적입니다.

또는 이동한 Foo 객체에 대한 특정 상태를 정의하여 표준 라이브러리의 개념 요구 사항이 다음과 같도록 할 수 있습니다. 아직도 만났습니다. 이렇게 하면 정의되지 않은 동작 없이 표준 라이브러리에서 이동된 Foo 객체를 사용할 수 있습니다.

표준 라이브러리 개념에서는 이동된 객체를 고려하지 않습니다. 따라서 이동된 개체가 해당 개념에 따라 유효한 상태로 유지되지 않는 경우 표준 라이브러리와 함께 사용하면 정의되지 않은 동작이 발생합니다.

위 내용은 C 11에서 이동된 개체의 유효성을 보장하는 조건은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿