Maison > développement back-end > C++ > Quand le compilateur C 11 génère-t-il automatiquement des opérations de déplacement ?

Quand le compilateur C 11 génère-t-il automatiquement des opérations de déplacement ?

Patricia Arquette
Libérer: 2024-11-27 07:53:12
original
347 Les gens l'ont consulté

When Does the C  11 Compiler Automatically Generate Move Operations?

Règles de génération automatique des opérations de déplacement

En C 11, la capacité du compilateur à générer automatiquement des opérations de déplacement diffère des règles pour les opérations de copie en C 98.

Déplacer le constructeur et déplacer l'affectation Opérateur

Dans les conditions suivantes, le compilateur générera automatiquement un constructeur de déplacement et un opérateur d'affectation de déplacement :

  • La classe n'a pas de constructeur de copie déclaré par l'utilisateur.
  • La classe n'a pas d'opérateur d'affectation de copie déclaré par l'utilisateur.
  • La classe n'a pas de constructeur de déplacement ni d'affectation de déplacement explicitement déclaré opérateur.

Cas où les opérations de déplacement ne sont pas automatiquement générées

Le compilateur ne générera pas automatiquement les opérations de déplacement si l'une des conditions suivantes est remplie :

  • La classe a un constructeur de copie et/ou un opérateur d'affectation de copie déclaré par l'utilisateur.
  • La classe a un constructeur de déplacement ou un opérateur d'affectation de déplacement explicitement déclaré, mais non défini.
  • La classe déclare un destructeur.

Outil de vérification des règles de génération automatique

La ressource suivante fournit une représentation visuelle des règles de génération automatique de membres spéciaux, y compris les opérations de déplacement :

[Image de Howard Diapositive de présentation de l'ACCU 2014 de Hinnant](https://i.sstatic.net/b2VBV.png)

Clarification supplémentaire

Les carrés rouges dans le tableau indiquent un comportement obsolète . Si vous souhaitez éviter de recourir à la dépréciation, envisagez de suivre la « règle de 3 » de C 98/03 : déclarez les deux membres de copie si vous déclarez le destructeur, ou déclarez au moins un membre de 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal