Maison >développement back-end >C++ >Comment les constructeurs de déplacement et les opérateurs d'affectation sont-ils implicitement générés en C ?
Génération implicite d'opérations de déplacement en C
Dans les premières versions de la norme C 11, il y a eu un débat concernant la génération implicite d'opérations de déplacement constructeurs et opérateurs d’affectation. Cela était dû à des préoccupations concernant les implications potentielles en termes de performances et au désir de fournir plus de contrôle aux programmeurs sur ces opérations.
Spécification actuelle
La spécification actuelle (N3225) indique que les constructeurs de déplacement et les opérateurs d'affectation seront implicitement déclarés comme valeurs par défaut si :
Résoudre le problème
Bien que le comportement par défaut ait changé au fil du temps, il existe plusieurs façons de remédier au manque d'opérations de déplacement implicites dans les anciens compilateurs :
Supplémentaire Considérations
Il est important de noter que la mise en œuvre de la sémantique de déplacement élimine le besoin d'une fonction membre d'échange. De plus, le constructeur de déplacement et l'opérateur d'affectation ne doivent être utilisés que lorsque la classe gère ses propres ressources, telles que la mémoire allouée dynamiquement. Pour les classes qui contiennent uniquement des types POD et des conteneurs STL, la sémantique de copie par défaut est généralement suffisante.
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!