>백엔드 개발 >C++ >이동 할당 연산자에서 `this != &rhs` 확인이 필요합니까?

이동 할당 연산자에서 `this != &rhs` 확인이 필요합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-28 19:28:12564검색

Is a `this != &rhs` Check Necessary in a Move Assignment Operator?

이동 할당 연산자와 this != &rhs

클래스의 표준 할당 연산자에는 this !=를 포함하는 것이 일반적입니다. &rhs는 자신에게 할당할 때 호출하는 개체를 수정하지 않도록 확인합니다. 그러나 이동 할당 연산자에서 이 확인이 필요한가요?

답변:

이동 할당 연산자에서 this != &rhs 확인이 필요한지 여부에 따라 의견이 다릅니다. 항상 포함하는 것이 좋은 습관이라고 주장하는 사람도 있고, 불필요하고 잠재적으로 해로울 수 있다고 생각하는 사람도 있습니다.

이유:

  • 이유 검사를 포함하려면: 할당되는 객체가 호출하는 객체 자체가 아닌지 확인하여 방지합니다. 자체 할당.
  • 검사를 생략하는 이유: 이동 할당 연산자에서 호출 개체는 정의에 따라 오른쪽(RHS) 개체에 대한 참조가 아닙니다. 따라서 this != &rhs 검사는 본질적으로 사실이며 불필요합니다. 게다가 실수로 RHS와 LHS를 교체하면 검사가 실패하여 정의되지 않은 동작이 발생합니다.

결론:

결국 포함 여부는 이동 할당 연산자에서 this != &rhs 확인은 개인 취향과 상황에 따라 다릅니다. C 표준에서는 필수가 아니지만 일부 개발자는 안전을 강화하거나 의도하지 않은 자체 할당을 방지하기 위해 이를 포함하도록 선택할 수 있습니다.

위 내용은 이동 할당 연산자에서 `this != &rhs` 확인이 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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