이동 연산의 자동 생성
C 11에서 이동 의미론의 도입은 이동 생성자와 이동 할당이 수행되는 상황에 대한 의문을 제기했습니다. 연산자는 자동으로 생성됩니다.
C 11에서는 복사 생성자 및 복사처럼 이동 연산이 자동으로 생성되지 않습니다. 할당 연산자. 컴파일러는 특정 조건이 충족되는 경우에만 이동 의미 체계를 생성합니다.
이러한 규칙을 이해하면 이동 의미론을 활용하는 클래스를 구현하는 데 도움이 됩니다. Howard Hinnant 프레젠테이션의 표는 이동 작업을 포함하여 특별 멤버의 자동 생성에 대한 간략한 개요를 제공합니다.
Declaration | Copy Constructor | Copy Assignment Operator | Move Constructor & Move Assignment Operator |
---|---|---|---|
None | Generated | Generated | Not Generated |
Copy Constructor | Not Generated | Generated | Not Generated |
Copy Assignment Operator | Not Generated | Not Generated | Not Generated |
Move Constructor | Not Generated | Not Generated | Not Generated |
Move Assignment Operator | Not Generated | Not Generated | Not Generated |
Destructor | Not Generated | Not Generated | Not Generated |
Copy Constructor & Copy Assignment Operator | Not Generated | Not Generated | Not Generated |
Copy Constructor & Move Constructor | Not Generated | Not Generated | Not Generated |
Copy Constructor & Move Assignment Operator | Not Generated | Not Generated | Not Generated |
Copy Assignment Operator & Move Constructor | Not Generated | Not Generated | Not Generated |
Copy Assignment Operator & Move Assignment Operator | Not Generated | Not Generated | Not Generated |
Move Constructor & Destructor | Not Generated | Not Generated | Not Generated |
Move Assignment Operator & Destructor | Not Generated | Not Generated | Not Generated |
Copy Constructor & Copy Assignment Operator & Move Constructor | Not Generated | Not Generated | Not Generated |
Copy Constructor & Copy Assignment Operator & Move Assignment Operator | Not Generated | Not Generated | Not Generated |
Copy Constructor & Move Constructor & Move Assignment Operator | Not Generated | Not Generated | Generated |
Copy Assignment Operator & Move Constructor & Move Assignment Operator | Not Generated | Not Generated | Generated |
개발자는 이러한 규칙을 인식함으로써 클래스가 이동 의미론을 적절하게 활용하고 최적의 효율성을 달성하도록 할 수 있습니다.
위 내용은 C 11에서 이동 생성자와 이동 할당 연산자는 언제 자동으로 생성됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!