Génération automatique d'opérations de déplacement
En C 11, l'introduction de la sémantique de déplacement a soulevé des questions sur les circonstances dans lesquelles les constructeurs de déplacement et l'affectation de déplacement les opérateurs sont automatiquement générés.
Sous C 11, les opérations de déplacement ne sont pas automatiquement générées comme les constructeurs de copie et les opérateurs d'affectation de copie. Le compilateur ne génère une sémantique de déplacement que si certaines conditions sont remplies :
Comprendre ces règles aide à guider la mise en œuvre de classes qui utilisent la sémantique des mouvements. Le tableau de la présentation de Howard Hinnant donne un aperçu concis de la génération automatique de membres spéciaux, y compris les opérations de déplacement :
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 |
En reconnaissant ces règles, les développeurs peuvent garantir que leurs classes utilisent correctement la sémantique des mouvements et atteignent une efficacité optimale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!