클래스의 표준 복사 할당 연산자에서는 할당된 객체가 호출 객체의 변경을 피하기 위해 if (this != &rhs)를 사용하는 호출 객체와 동일합니다. 그런데 이동 할당 연산자에 이 확인이 필요한가요?
operator=(Class&&)로 표시되는 이동 할당 연산자는 리소스의 소유권을 효율적으로 이전하기 위해 설계되었습니다. 한 개체에서 다른 개체로. 복사 할당과 달리 객체의 새 복사본을 생성할 필요가 없습니다.
이것이 == &rhs?
이 == &rhs가 이동 할당에서 참일 수 있는지 여부에 대한 의문이 제기됩니다. 연산자.객체가 rvalue 참조에 바인딩되는 경우 두 가지 시나리오가 있습니다.복사 및 과제 이동 사후 조건:
자체 이동 할당 구현:
이를 달성하려면 다음과 같은 클래스에서 이동 할당 연산자에 대해 세 가지 구현이 가능합니다. dumb_array가 제공됩니다:1. 구별하기 위해 검사가 수행됩니다. 자체 이동 할당을 수행하고 개체를 유효한 상태로 설정한 후 진행합니다.
2. 체크인이 생략되어 자체 이동 할당이 작동하지 않습니다.
3. 클래스가 즉시 사용해야 하는 리소스를 보유하지 않는 경우 swap(other) 메서드가 사용됩니다. 출시되었습니다.
저자는 최상의 구현은 특정 클래스 디자인, 하드웨어 특성 및 성능 요구 사항에 달려 있다고 강조합니다.
클래스가 메모리를 직접 관리하지 않는 경우에는 연산자=(Class& &) = 기본값; 기본적인 예외 안전을 바탕으로 최고의 성능을 구현합니다.
위 내용은 이동 할당 연산자에 `if (this != &rhs)` 확인이 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!