이동된 객체에 대해 어떤 작업이 허용됩니까?
C 표준은 이동된 객체의 동작을 정의합니다. 이 지식은 std::swap, 같은 특정 기능이 어떻게 작동하는지 이해하는 데 중요합니다.
표준 정의
표준(섹션 17.6.5.15)에 따르면, C 표준 라이브러리 유형의 개체는 이동될 수 있으며 이후에 "유효하지만 지정되지 않음" 위치에 배치됩니다. state."
작업에 대한 의미
객체가 지정되지 않은 상태인 경우 전제 조건이 없는 모든 작업을 수행할 수 있습니다. 전제 조건 없는 작업에는 다음이 포함됩니다.
그러나 작업은 전제 조건이 있는 경우 일반적으로 추가 확인 없이는 수행할 수 없습니다. 예:
예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!