>백엔드 개발 >C++ >C에서 이동된 표준 라이브러리 개체에 대해 어떤 작업이 허용됩니까?

C에서 이동된 표준 라이브러리 개체에 대해 어떤 작업이 허용됩니까?

DDD
DDD원래의
2024-12-25 11:50:40316검색

What Operations Are Permissible on Moved-From Standard Library Objects in C  ?

이동된 객체에 대한 작업

이동된 객체는 소멸만 가능하다는 일반적인 오해에도 불구하고 C 표준에서는 이동된 객체를 다음과 같이 지정합니다. -표준 라이브러리 유형의 개체는 지정되지 않은 상태에 배치되어 제한된 작업 범위를 허용합니다. 이 상태는 개체가 이동된 후에 발생하며 일반적으로 전제 조건이 없는 작업을 활성화합니다.

무조건 작업

일반적으로 다음 작업이 이동된 항목에 적용될 수 있습니다. 전제조건을 만나지 않는 객체:

  • 파괴: 객체의 메모리 할당 해제.
  • 과제: 이동된 객체를 다른 객체의 값으로 설정
  • 지속적인 관찰: 다음과 같은 정보에 액세스 getter 함수, 배열 크기 및 공허함 boolean.

조건부 연산

반대로, 다음 연산에서는 객체가 지정되지 않은 상태가 아니어야 하므로 일반적으로 이동 시에는 허용되지 않습니다. -객체에서:

  • 역참조: 포인터 또는 참조를 통해 개체의 내부에 액세스
  • Mutation: 개체의 필드를 변경합니다.

std::swap 관련

예제 스왑 함수 템플릿에서 할당 작업(라인 2 및 3) 할당에는 일반적으로 전제 조건이 없기 때문에 이동된 객체를 포함하더라도 유효합니다.

마지막으로

표준 라이브러리 유형에 대한 지정되지 않은 상태 객체를 자세히 설명하는 표준 17.6.5.15 [lib.types.movedfrom]에 있습니다.

위 내용은 C에서 이동된 표준 라이브러리 개체에 대해 어떤 작업이 허용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.