Génération d'opérations de déplacement en C
En C 98, les constructeurs de copie et les opérateurs d'affectation étaient automatiquement générés pour les classes sans définitions personnalisées. Cependant, avec l'introduction de la sémantique de déplacement dans C 11, la génération d'opérations de déplacement nécessite une réflexion plus approfondie.
Génération automatique des opérations de déplacement
Constructeurs de déplacement et opérateurs d'affectation de déplacement sont automatiquement générés uniquement si certaines conditions sont remplies :
Exceptions à la génération automatique
Dans certains cas, les opérations de déplacement ne sont pas automatiquement générées, même si les conditions ci-dessus sont remplies. Par exemple :
Informations supplémentaires
Présentation de Howard Hinnant lors de la conférence ACCU 2014 fournit un tableau complet résumant les règles de génération automatique de membres spéciaux, y compris les opérations de déplacement. Les diapositives soulignent que les comportements obsolètes sont indiqués par des carrés rouges.
Pour garantir que la sémantique de déplacement est gérée correctement, il est recommandé de suivre la « règle de 3 » de la C 98/03. Cela signifie déclarer explicitement les deux membres de la copie si le destructeur est déclaré, ou déclarer au moins un des membres de la copie.
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!