> 백엔드 개발 > C++ > C에서 이동한 객체에는 어떤 작업이 허용됩니까?

C에서 이동한 객체에는 어떤 작업이 허용됩니까?

Patricia Arquette
풀어 주다: 2025-01-01 14:08:10
원래의
841명이 탐색했습니다.

What Operations Are Allowed on Moved-From C   Objects?

이동된 개체에 허용되는 작업

C 표준은 이동된 개체에 허용되는 작업을 정의합니다. 이러한 객체는 지정되지 않은 상태로 간주되어 제한된 범위의 작업이 허용됩니다.

표준 참조

섹션 17.6.5.15 [lib.types.movedfrom] 이동된 객체는 "유효하지만 지정되지 않은 위치에 배치되어야 한다"는 표준 상태 state."

비제한적 작업

지정되지 않은 상태의 개체는 전제 조건이 없는 작업을 수행할 수 있습니다. 일반적인 예는 다음과 같습니다.

  • 파기
  • 할당
  • 상시 관찰자(예: 가져오기, 비어 있음, 크기)

제한적 작업

역참조 또는 pop_back과 같은 전제 조건이 있는 작업은 개체의 지정되지 않은 상태가 필요한 요구 사항을 충족하지 않을 수 있으므로 이동된 개체에 대해 직접 수행할 수 없습니다.

예: std::swap

예제 스왑 함수 템플릿은 다음에 의존합니다. 이동된 개체에 대한 할당(라인 2 및 3). 이는 할당이 비제한적 작업이기 때문에 유효합니다.

대체 생성자 구문

라인 1과 관련하여 T c = std::move(a) 사용 ; T c(std::move(a)) 대신; 효율성상의 이유입니다. 직접 초기화에는 복사 생성자 호출이 필요하지만 할당에는 그렇지 않습니다.

위 내용은 C에서 이동한 객체에는 어떤 작업이 허용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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