C++ : La sémantique de déplacement

Définir la sémantique de déplacement

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Découvrez l'intérêt d'utiliser la sémantique de déplacement de C++ 11. Il s'agit de tirer le meilleur parti des structures de données manipulées dans vos programmes.

Transcription

La sémantique de déplacement, move semantics en anglais, représente une nouveauté importante pour le langage C++. Elle a été amenée par le C++11 et est vite devenue incontournable. Pour illustrer l'intérêt d'utiliser la sémantique de déplacement, prenons un exemple qui n'utilise pas cette sémantique. Nous avons une fonction qui prend un objet de type T et retourne un objet du même type T. Cette fonction utilise un passage par valeurs, ce qui signifie que quand elle est appelée, un objet doit être construit par copie de l'objet passé en paramètre pour être utilisé par la fonction. Parce que la fonction retourne aussi par valeurs un autre objet qui est également construit pour retourner le résultat. Nous avons donc deux objets construits le temps de l'appel de la fonction. L'un pour copier a, l'autre pour être retourné au constructeur copie de b avant d'être détruit. Considérons maintenant ce que fait un constructeur copie. Il doit d'abord initialiser l'objet ici avec reset, puis copier les données de l'objet old vers le nouveau. En fonction de la classe, le volume de données peut varier, éventuellement représenter une quantité non négligeable de données et donc de temps et de mémoire. Avec la sémantique de déplacement, il est maintenant possible d'atténuer l'essentiel de ce travail en déplaçant simplement les données plutôt que de les copier. Déplacer les données d'un objet A à un objet B, peut se résumer à une réaffectation de données. Il suffit alors de prendre les données associées à A et de les associer à B. Aucune copie n'a lieu. Ceci est réalisé grâce à ce que l'on appelle la référence rvalue. La référence utilisée traditionnellement en C++, en haut, est maintenant appelée référence lvalue de manière à la distinguer de la rvalue, qui est écrite ici en bas. Une référence rvalue fonctionne quasiment de la même façon qu'une référence lvalue à une différence près. La rvalue peut être déplacée, la lvalue ne le peut pas. La sémantique de déplacement ouvre donc des opportunités tant sur la performance que sur l'utilisation mémoire de vos applications. Nous allons voir par la suite comment exploiter au mieux cette fonctionnalité puissante.

C++ : La sémantique de déplacement

Développez des classes compatibles avec la sémantique de déplacement en C++. Obtenez un code robuste et performant grâce à une utilisation pertinente de la sémantique move.

31 min (10 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 oct. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !