Generación automática de operaciones de movimiento
En C 11, la introducción de la semántica de movimiento generó preguntas sobre las circunstancias bajo las cuales se mueven los constructores y la asignación de movimientos. los operadores se generan automáticamente.
En C 11, las operaciones de movimiento no se generan automáticamente como los constructores de copia y los operadores de asignación de copia. El compilador solo genera semántica de movimiento si se cumplen ciertas condiciones:
Comprender estas reglas ayuda a guiar la implementación de clases que utilizan la semántica de movimientos. La tabla de la presentación de Howard Hinnant proporciona una descripción general concisa de la generación automática de miembros especiales, incluidas las operaciones de movimiento:
Declaración | Copiar constructor | Copiar operador de asignación | Mover constructor y mover asignación Operador |
---|---|---|---|
Ninguno | Generado | Generado | No generado |
Copiar constructor | No Generado | Generado | No generado |
Operador de asignación de copia | No generado | No generado | No generado |
Mover constructor | No Generado | No generado | No generado |
Mover operador de asignación | No generado | No generado | No generado |
Destructor | No Generado | No generado | No generado |
Constructor de copia y operador de asignación de copia | No generado | No Generado | No generado |
Copiar constructor y mover Constructor | No generado | No generado | No generado |
Copiar constructor y mover operador de asignación | No Generado | No generado | No Generado |
Copiar operador de asignación y constructor de movimiento | No generado | No generado | No generado |
Copiar operador de asignación y mover operador de asignación | No generado | No Generado | No generado |
Mover constructor y destructor | No generado | No generado | No generado |
Mover operador y destructor de asignación | No Generado | No generado | No generado |
Copiar constructor y copiar operador de asignación y mover constructor | No generado | No generado | No generado |
Copiar constructor y copiar Operador de asignación y operador de asignación de movimiento | No generado | No generado | No generado |
Copiar constructor y mover constructor y mover asignación Operador | No generado | No Generado | Generado |
Copiar operador de asignación y mover constructor y mover operador de asignación | No generado | No generado | Generado |
Al reconocer estas reglas, los desarrolladores pueden asegurarse de que sus clases utilicen correctamente mover la semántica y lograr una eficiencia óptima.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3