Maison > développement back-end > C++ > En quoi les règles de génération d'opérations de déplacement automatique diffèrent-elles entre C 98 et C 11 ?

En quoi les règles de génération d'opérations de déplacement automatique diffèrent-elles entre C 98 et C 11 ?

Linda Hamilton
Libérer: 2024-11-29 05:32:16
original
1003 Les gens l'ont consulté

How Do Automatic Move Operation Generation Rules Differ Between C  98 and C  11?

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

En C 98, le compilateur pouvait créer automatiquement des constructeurs de copie et des opérateurs d'affectation de copie via une copie par membre. Ce processus s'est étendu au C 11 avec l'introduction de la sémantique des mouvements. Cependant, les règles de génération automatique des opérations de déplacement diffèrent de celles des opérations de copie.

La présentation ACCU 2014 de Howard Hinnant donne un aperçu concis de ces règles. Le tableau suivant résume les points clés :

</p>
<table>
<thead><tr>
<th> </th>
<th>Destructor</th>
<th>Move Constructor</th>
<th>Move Assignment Operator</th>
</tr></thead>
<tbody>
<tr>
<td>C  98/03</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>C  11 (Defect Report 1492)</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>C  11 Final</td>
<td>Yes</td>
<td>Yes<sup>*</sup>
</td>
<td>Yes<sup>*</sup>
</td>
</tr>
</tbody>
</table>
<p>

Oui : Généré automatiquement.
Non : Pas automatiquement généré.

*Mais seulement implicitement défini (non déclaré ou déclaré = par défaut). Les définitions explicites suppriment la génération.

Ces règles indiquent que même si les constructeurs de déplacement et les opérateurs d'affectation de déplacement sont généralement générés automatiquement en C 11, il existe certains cas où ils peuvent ne pas l'être. Par exemple, si le destructeur est explicitement défini, les opérations de déplacement ne seront pas générées. De même, définir explicitement les opérations de déplacement elles-mêmes supprime la génération automatique.

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!

source:php.cn
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