>백엔드 개발 >C++ >C 11 컴파일러는 언제 자동으로 이동 작업을 생성합니까?

C 11 컴파일러는 언제 자동으로 이동 작업을 생성합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-27 07:53:12219검색

When Does the C  11 Compiler Automatically Generate Move Operations?

이동 연산 자동 생성 규칙

C 11에서 이동 연산을 자동으로 생성하는 컴파일러의 기능은 복사 연산 규칙과 다릅니다. C 98.

생성자 이동 및 할당 이동 연산자

다음 조건에서 컴파일러는 자동으로 이동 생성자와 이동 할당 연산자를 생성합니다.

  • 클래스에 사용자가 선언한 복사 생성자가 없습니다.
  • 클래스에 사용자가 선언한 복사 할당 연산자가 없습니다.
  • 클래스에 명시적으로 선언된 이동 생성자나 이동 할당이 없습니다.

이동 연산이 자동으로 생성되지 않는 경우

다음 조건 중 하나라도 충족되면 컴파일러는 이동 연산을 자동으로 생성하지 않습니다.

  • 클래스에 사용자가 선언한 복사 생성자 및/또는 복사 할당이 있습니다. 연산자.
  • 클래스에 명시적으로 선언되었지만 정의되지 않은 이동 생성자 또는 이동 할당 연산자가 있습니다.
  • 클래스가 소멸자를 선언합니다.

자동 생성 규칙 확인 도구

다음 리소스는 특수 항목 자동 생성 규칙을 시각적으로 보여줍니다. 이동 작업을 포함한 회원:

[Howard Hinnant의 ACCU 2014 프레젠테이션 슬라이드 이미지](https://i.sstatic.net/b2VBV.png)

추가 설명

표의 빨간색 사각형은 더 이상 사용되지 않는 동작을 나타냅니다. 지원 중단에 의존하지 않으려면 C 98/03의 "3의 규칙"을 따르는 것을 고려하세요. 소멸자를 선언하는 경우 두 복사본 멤버를 모두 선언하거나 적어도 하나의 복사본 멤버를 선언하세요.

위 내용은 C 11 컴파일러는 언제 자동으로 이동 작업을 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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