>백엔드 개발 >C++ >C 98과 C 11 사이의 자동 이동 작업 생성 규칙은 어떻게 다릅니까?

C 98과 C 11 사이의 자동 이동 작업 생성 규칙은 어떻게 다릅니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-29 05:32:161112검색

How Do Automatic Move Operation Generation Rules Differ Between C  98 and C  11?

자동 이동 연산 생성 규칙

C 98에서 컴파일러는 멤버별 복사를 통해 복사 생성자와 복사 할당 연산자를 자동으로 생성할 수 있었습니다. 이 프로세스는 이동 의미론의 도입으로 C 11로 확장되었습니다. 그러나 이동 작업의 자동 생성 규칙은 복사 작업의 규칙과 다릅니다.

Howard Hinnant의 ACCU 2014 프레젠테이션에서는 이러한 규칙에 대한 간략한 개요를 제공합니다. 다음 표에는 핵심 사항이 요약되어 있습니다.


Destructor Move Constructor Move Assignment Operator
C 98/03 No Yes Yes
C 11 (Defect Report 1492) Yes No No
C 11 Final Yes Yes* Yes*

예: 자동으로 생성됩니다.
아니요: 자동으로 아님 생성됩니다.

*그러나 암시적으로만 정의됩니다(선언되지 않거나 선언되지 않음=기본값). 명시적 정의는 생성을 억제합니다.

이러한 규칙은 이동 생성자와 이동 할당 연산자가 일반적으로 C 11에서 자동으로 생성되지만 그렇지 않은 경우도 있음을 나타냅니다. 예를 들어 소멸자가 명시적으로 정의된 경우 이동 작업이 생성되지 않습니다. 마찬가지로 이동 작업 자체를 명시적으로 정의하면 자동 생성이 억제됩니다.

위 내용은 C 98과 C 11 사이의 자동 이동 작업 생성 규칙은 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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