Manque de sémantique de déplacement automatique dans les premières versions C 11
En tant que programmeur travaillant principalement avec des types POD et des conteneurs STL, écrivant des affectations explicites les opérateurs et les constructeurs de copie sont largement inutiles en raison de leur implémentation par défaut. Cependant, l'absence de sémantique de déplacement automatique dans les premières versions de la norme C 11 a soulevé des inquiétudes quant à la facilité d'utilisation et à la sécurité.
La génération implicite de constructeurs de déplacement et d'opérateurs d'affectation a fait l'objet de nombreux débats et révisions dans la norme C. Dans les premières versions, cette sémantique n'était pas automatiquement fournie, ce qui posait un défi aux programmeurs essayant d'exploiter les capacités de déplacement sans effort de codage supplémentaire.
La spécification actuelle (N3225) fournit des conditions plus strictes pour la génération de déplacements implicites. Pour avoir un constructeur de déplacement implicitement déclaré, une classe X doit répondre à plusieurs critères, notamment :
Un langage similaire s'applique aux opérateurs d'affectation de déplacement implicites. Ces restrictions ont été introduites pour répondre aux préoccupations concernant les conflits potentiels entre la sémantique implicite et définie par l'utilisateur, ainsi que l'utilisation abusive de la sémantique de déplacement.
L'absence de sémantique de déplacement implicite dans les premières versions C 11 obligeait les programmeurs à implémenter manuellement ces fonctions. s'ils souhaitaient profiter des capacités de déplacement. Cependant, les révisions ultérieures de la norme ont résolu ce problème, rendant la génération de déplacements implicites plus largement disponible et simplifiant l'utilisation de la sémantique de déplacement pour la gestion de la propriété des objets.
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!