>백엔드 개발 >C++ >C에서 이동된 객체로 무엇을 할 수 있나요?

C에서 이동된 객체로 무엇을 할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-25 12:03:09571검색

What Can You Do with a Moved-From Object in C  ?

이동된 객체에 대해 어떤 작업이 허용됩니까?

C 표준은 이동된 객체의 동작을 정의합니다. 이 지식은 std::swap, 같은 특정 기능이 어떻게 작동하는지 이해하는 데 중요합니다.

표준 정의

표준(섹션 17.6.5.15)에 따르면, C 표준 라이브러리 유형의 개체는 이동될 수 있으며 이후에 "유효하지만 지정되지 않음" 위치에 배치됩니다. state."

작업에 대한 의미

객체가 지정되지 않은 상태인 경우 전제 조건이 없는 모든 작업을 수행할 수 있습니다. 전제 조건 없는 작업에는 다음이 포함됩니다.

  • 파기
  • 할당
  • 지속적인 관찰자(예: get,empty, size)

그러나 작업은 전제 조건이 있는 경우 일반적으로 추가 확인 없이는 수행할 수 없습니다. 예:

  • 역참조
  • pop_back

예: std::swap

표준: :swap 함수는 원래 질문에 표시된 대로 이동된 개체에 대한 할당이 필요합니다. 이는 할당이 전제조건 없는 작업이기 때문에 가능합니다.

추가 참고: T c = std::move(a) 대 T c(std::move(a))

std::swap 구현에서는 복사 생성자 T 대신 직접 이동 할당 T c = std::move(a)가 사용됩니다. c(표준::이동(a)). 이는 성능 저하를 초래할 수 있는 불필요한 복사본을 피하기 위해 수행됩니다.

위 내용은 C에서 이동된 객체로 무엇을 할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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