Maison > développement back-end > C++ > Quelles opérations sont autorisées sur les objets de bibliothèque standard déplacés en C ?

Quelles opérations sont autorisées sur les objets de bibliothèque standard déplacés en C ?

DDD
Libérer: 2024-12-25 11:50:40
original
311 Les gens l'ont consulté

What Operations Are Permissible on Moved-From Standard Library Objects in C  ?

Opérations sur les objets déplacés

Malgré l'idée fausse courante selon laquelle les objets déplacés ne peuvent être détruits que, la norme C précise que les objets déplacés -from les objets des types de bibliothèques standard sont placés dans un état non spécifié, permettant une portée limitée des opérations. Cet état apparaît après le déplacement d'un objet, permettant des opérations qui n'ont généralement pas de conditions préalables.

Opérations inconditionnelles

Les opérations suivantes peuvent généralement être appliquées aux objets déplacés. objets sans rencontrer de conditions préalables :

  • Destruction : Désallocation de l'objet mémoire.
  • Affectation : Définition d'un objet déplacé comme valeur d'un autre objet.
  • Observations constantes : Accès à des informations telles que les fonctions getter , tailles de tableau et booléens de vide.

Conditionnel Opérations

En revanche, les opérations suivantes peuvent nécessiter que l'objet ne soit pas dans un état non spécifié et ne sont donc généralement pas autorisées sur les objets déplacés :

  • Déréférence : Accéder aux composants internes de l'objet via des pointeurs ou références.
  • Mutation : Apporter des modifications aux champs de l'objet.

Concernant std::swap

Dans Dans l'exemple de modèle de fonction d'échange, les opérations d'affectation (lignes 2 et 3) sont valides même si elles impliquent des objets déplacés, car l'affectation ne le fait généralement pas. avoir des conditions préalables.

Enfin

La norme détaillant les objets à état non spécifié pour les types de bibliothèques standard se trouve à 17.6.5.15 [lib.types.movedfrom].

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal